Domanda

Sto cercando di caricare un foglio di calcolo a schede singole Excel 97 in una tabella del server SQL utilizzando la funzione OleDbDataAdapter. Da tutta la documentazione che ho trovato, il primo parametro dovrebbe essere " selezionare * da [foglio1 $] " ;. Questo funziona bene per me solo se la scheda nel foglio di lavoro è denominata Foglio1. Se cambio tra parentesi quadre [] l'attuale nome della scheda, funziona anche bene.

Il problema è che il foglio di calcolo che viene caricato proviene da un altro sistema e che il sistema cambia il nome della scheda ad ogni carico. Come posso capire qual è il nome della scheda in modo che i miei utenti non debbano aprire il foglio di calcolo e rinominare la scheda?

È stato utile?

Soluzione

Ok, prima apri una connessione OleDB al tuo foglio di calcolo Excel.

Quindi, utilizzare qualcosa di simile al seguente (mostrato in 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()

Questo eseguirà il ciclo attraverso tutte le tabelle nel file Excel (tabella = fogli o intervalli denominati) e otterrà il nome di ciascuno. Inoltre, filtrerà tutte le tabelle che contengono caratteri a cui non è possibile accedere tramite ODBC (gli spazi sono il problema più comune).

Altri suggerimenti

Ho esaminato questo aspetto in passato e sono sempre giunto alla conclusione che dovevo imporre i nomi delle schede sulle persone che mi davano i fogli di calcolo, non sembra esserci un modo affidabile per trovarli .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top