Domanda

Ho uno strumento di terze parti che genera un foglio di calcolo XML (* .xls). Ho un altro programma che legge questo spreasheet e lo elabora. Il contenuto del foglio di calcolo XML generato è una tabella con 5 colonne e il mio programma viene eseguito query di selezione su di loro. I m affrontare un problema mentre apre un collegamento al foglio generato. Si dice "{" tabella esterna non è nel formato previsto. "}". La mia stringa Connectin è "Provider = Microsoft.Jet.OLEDB.4.0; Dati Source =" + excelFileName + "; estesa Proprietà = \" Excel 8.0; HDR = YES; \ ""; Ho bisogno di cambiare qualcosa a questa stringa? Ho provato ad utilizzare un set di dati e chiamando DataSet.ReadXML (excelFileName); Ma per la squadra di set di dati contiene mio tavolo. Eventuali ingressi su come leggere un foglio di calcolo XML?

Grazie per il vostro tempo, CS

È stato utile?

Soluzione

Sembra che la stringa di connessione è impostata per i file più vecchi formato binario di Excel. Si vuole una stringa di connessione diverso per XML. Se si sta parlando di nuovi file XML di Excel 2007, allora avete bisogno di questo stringa di connessione :

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES";

Se si sta parlando del formato XML più vecchio che è venuto in Excel 2003, quindi non sono sicuro che ci sia una stringa di connessione. In questo caso, la soluzione migliore è quella di aprire in Excel e quindi salvare come file xls, e utilizzare la stringa di connessione si erano originariamente utilizzato.

A proposito, ConnectionStrings.com è un ottimo posto per trovare qualsiasi stringa di connessione vecchia che potrebbe essere necessario per accedere a tutti i tipi differenti di dati.

Da notare anche, come altri hanno notato, che se si tratta di un file XML, non dovrebbe avere un'estensione di file xls, dovrebbe essere o .xml o .xlsx.

Altri suggerimenti

               Excel.Workbook wb1;

            Excel.Application wb2 = new Excel.Application();

            wb2.DisplayAlerts = false;
                           wb1 = (Excel.Workbook)wb2.Workbooks._Open(filename);

            if (wb1.FileFormat == Excel.XlFileFormat.xlXMLSpreadsheet)
            {
                                    wb1.SaveAs(filename, Excel.XlFileFormat.xlExcel12, Type.Missing, Type.Missing,
                        false, false, Excel.XlSaveAsAccessMode.xlNoChange,
                       Excel.XlSaveConflictResolution.xlOtherSessionChanges, false);
            }
            else
            {
                wb2.Workbooks.Close();

            }

È possibile convertire il foglio di calcolo di Excel per 2007 Formato e quindi utilizzare LINQ per interrogare i fogli utilizzando qualsiasi provider open source o OleDB.

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