Как читать XML лист - PullRequest
       19

Как читать XML лист

0 голосов
/ 21 мая 2009

У меня есть сторонний инструмент, который генерирует электронную таблицу xml (* .xls). У меня есть другая программа, которая читает эту таблицу и обрабатывает ее. Содержимое сгенерированной электронной таблицы xml представляет собой таблицу с 5 столбцами, и моя программа выполняет для них запросы выбора. Я столкнулся с проблемой при открытии соединения с созданной электронной таблицей. Там написано "{" Внешняя таблица не в ожидаемом формате. "}". Моя строка Connectin имеет вид "Provider = Microsoft.Jet.OLEDB.4.0; Источник данных =" + excelFileName + "; Расширенные свойства = \" Excel 8.0; HDR = YES; \ ""; Нужно ли что-нибудь изменить в этой строке? Я попытался использовать набор данных и вызвать dataSet.ReadXml (excelFileName); Но набор данных не содержит мою таблицу. Любые материалы о том, как читать электронную таблицу XML?

Спасибо за ваше время, CS

Ответы [ 2 ]

1 голос
/ 21 мая 2009

Похоже, что ваша строка подключения установлена ​​для более старых файлов Excel в двоичном формате. Вы хотите другую строку подключения для XML. Если вы говорите о новых XML-файлах Excel 2007, то вам нужна эта строка подключения :

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

Если вы говорите о более старом формате xml, который появился в Excel 2003, то я не уверен, что есть строка подключения. В этом случае лучше всего открыть в Excel, а затем сохранить как файл xls и использовать строку подключения, которую вы изначально использовали.

Кстати, ConnectionStrings.com - это отличное место, где можно найти любую старую строку подключения, которая может понадобиться вам для доступа ко всем различным типам данных.

Также обратите внимание, как другие отметили, что если это файл xml, он не должен иметь расширение файла xls, это должно быть либо .xml, либо .xlsx.

0 голосов
/ 09 июля 2010
               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();

            }

Вы можете преобразовать таблицу Excel в формат 2007 и затем использовать LinQ для запроса листов с помощью любого поставщика с открытым исходным кодом или OleDB.

...