Quel est le nom de l'onglet lors du chargement du fichier XLS dans vb 2008?

StackOverflow https://stackoverflow.com/questions/1002568

  •  05-07-2019
  •  | 
  •  

Question

J'essaie de charger une feuille de calcul à onglets unique Excel 97 dans une table de serveur SQL à l'aide de la fonction OleDbDataAdapter. Dans toute la documentation que j'ai trouvée, le premier paramètre devrait être "select * from [sheet1 $]". Cela fonctionne bien pour moi que si l'onglet dans la feuille de calcul est nommé Sheet1. Si je remplace le nom de l'onglet par les crochets [], cela fonctionne également très bien.

Le problème est que la feuille de calcul en cours de chargement provient d'un autre système et que ce dernier modifie le nom de l'onglet à chaque chargement. Comment comprendre le nom de l'onglet afin que mes utilisateurs n'aient pas à ouvrir la feuille de calcul et à renommer l'onglet?

Était-ce utile?

La solution

Ok, ouvrez d’abord une connexion OleDB à votre feuille de calcul Excel.

Ensuite, utilisez quelque chose comme ceci (montré dans VB.NET):

Imports System.Data
Imports System.Data.Odbc
Imports System.Data.OleDb

Dim DSN As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=MYEXCELFILE.XLS;Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;MAXSCANROWS=12"""
Dim OleDbConn As New OleDbConnection(DSN)
OleDbConn.Open()
Dim tables As System.Data.DataTable = OleDbConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)
Dim tableName As String
Dim canBeImported As Boolean
For Each dr As System.Data.DataRow In tables.rows
    tableName = dr.Item("TABLE_NAME").ToString
    canBeImported = (tableName.IndexOfAny(New Char() {" ","[","]","'","""","`",";"}) < 0)
Next
OleDbConn.Close()

Cela va parcourir toutes les tables du fichier Excel (table = feuilles ou plages nommées) et obtenir le nom de chacune. De plus, il filtrera toutes les tables contenant des caractères inaccessibles via ODBC (les espaces sont le problème le plus courant).

Autres conseils

J'ai déjà examiné cette question par le passé et j'en suis toujours arrivé à la conclusion que je devais appliquer des noms de tabulation aux personnes qui me fournissaient les feuilles de calcul. Il ne semble pas y avoir de moyen fiable pour les trouver. .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top