Вопрос

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

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

Это было полезно?

Решение

Похоже, ваша строка подключения установлена для старых файлов 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.

Другие советы

               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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top