у меня есть файл xlsx, мне необходимо сохранить его в формат xml.
Библиотека Microsoft.Office.Interop.Excel не подходит, т.к. она требует установленного MsOffice.
Перерыла все форумы, много что можно сделать, но только не то что нужно.
С помощью OleDB не получилось, т.к. нужны не только данные, но и оформление.
открываю свой документ SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(path, true);
и пытаюсь изменить его тип spreadsheetDocument.ChangeDocumentType(<тип>);
но из доступных только xlam, xltm, xlsx, xltx, xlsm, т.е. xml нету
Здравствуйте, grief89, Вы писали:
G>открываю свой документ SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(path, true); G>и пытаюсь изменить его тип spreadsheetDocument.ChangeDocumentType(<тип>); G>но из доступных только xlam, xltm, xlsx, xltx, xlsm, т.е. xml нету
Здравствуйте, Qbit86, Вы писали:
Q>Здравствуйте, grief89, Вы писали:
G>>открываю свой документ SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(path, true); G>>и пытаюсь изменить его тип spreadsheetDocument.ChangeDocumentType(<тип>); G>>но из доступных только xlam, xltm, xlsx, xltx, xlsm, т.е. xml нету
Q>Converting Back to Flat OPC XML from In-Memory Packages.
еще раз спасибо, но непонятно как то, скачала исходник примера, там везде используется Interop.excel, что не подходит. Либо я не поняла в принципе
Разве нет относительно стандартного метода сохранения в xml?
Подскажите поподробнее пожалуйста
Здравствуйте, grief89, Вы писали:
Q>>Converting Back to Flat OPC XML from In-Memory Packages.
G>еще раз спасибо, но непонятно как то, скачала исходник примера, там везде используется Interop.excel, что не подходит. Либо я не поняла в принципе
Есть древний убогий бинарный формат документов MS Office. Для работы с ним используются вырвиглазные COM-обёртки, интероп с установленным офисом и тому подобный гудрон. Все примеры использования этого API из интернетов непременно нужно выпилить, дабы они не смущали своим наличием неподготовленных обывателей. Interop.Excel необходимо забыть.
Много лет назад появился новый формат Open XML (добавился «x» к расширению документов). Если документ .docx или .xlsx переименовать в .zip, и распаковать, то видно, что новый формат документов Офиса — набор XML'ек. Для высокоуровневой манипуляции с этими XML'ками создан вразумительный, почти человеческий API — Open XML SDK.
Не надо использовать примеры с Interop.Excel. Надо использовать примеры с OpenXML SDK. Просто почитай в окрестностях ссылки, которую я привёл выше.
Я бы все же предложил использовать более простую обертку над OpenXML (мне он особо понятным не кажется, хоть что тут делай).
Конекретно предлагаю вот это ClosedXML
Ну и как уже сказали, это все только для xlsx-файлов. Если вам нужно читать даные из бинарных xls, то у вас есть варианты:
Работать с ExcelApplication (т.е. через интеропы)
Воспользоваться какой-то готовой библиотекой, умеющей читать бинарные xls. Из платных порекомендую Aspose.Cells for .NET. Из бесплатных знаю только NPOI, но каково оно...
Можно попробовать использовать ODBC Excel Provider — сам никогда не делал, но слышал, что есть много проблем и по возможности стоит избегать.
Здравствуйте, Qbit86, Вы писали:
Q>Здравствуйте, grief89, Вы писали:
Q>>>Converting Back to Flat OPC XML from In-Memory Packages.
G>>еще раз спасибо, но непонятно как то, скачала исходник примера, там везде используется Interop.excel, что не подходит. Либо я не поняла в принципе
Q>Есть древний убогий бинарный формат документов MS Office. Для работы с ним используются вырвиглазные COM-обёртки, интероп с установленным офисом и тому подобный гудрон. Все примеры использования этого API из интернетов непременно нужно выпилить, дабы они не смущали своим наличием неподготовленных обывателей. Interop.Excel необходимо забыть.
Q>Много лет назад появился новый формат Open XML (добавился «x» к расширению документов). Если документ .docx или .xlsx переименовать в .zip, и распаковать, то видно, что новый формат документов Офиса — набор XML'ек. Для высокоуровневой манипуляции с этими XML'ками создан вразумительный, почти человеческий API — Open XML SDK.
Q>Не надо использовать примеры с Interop.Excel. Надо использовать примеры с OpenXML SDK. Просто почитай в окрестностях ссылки, которую я привёл выше.
Я просмотрела примеры с OpenXML. В них насколько я поняла сначала используется преобразование из форматов MsOffice в xml, а потом обратно. Но при попытке преобразования в xml,файл создался но не открывается в Office. Но тогда в чем проблема?
Здравствуйте, grief89, Вы писали:
G>у меня есть файл xlsx, мне необходимо сохранить его в формат xml. G>... нужны не только данные, но и оформление.
О каком "оформлении" может идти речь в XML? Это просто универсальный формат, в нём НЕТ "оформления". Пересмотрите свой вопрос или сформулируйте реальную задачу, а не потуги с конвертацией.
Здравствуйте, matumba, Вы писали:
M>О каком "оформлении" может идти речь в XML? Это просто универсальный формат, в нём НЕТ "оформления". Пересмотрите свой вопрос или сформулируйте реальную задачу, а не потуги с конвертацией.
Я так понял, речь шла о создании корректного xlsx-файла, в котором OpenXML-части упакованы не в zip-архив (как по умолчанию), а в единый xml-файл (такой режим тоже поддерживается). Документ, конечно, сильно раздуется в размерах по сравнению с упакованной версией, но зато будет текстовым (удобно для хранения в системе контроля версий, например).
Здравствуйте, Qbit86, Вы писали:
Q>Я так понял, речь шла о создании корректного xlsx-файла, в котором OpenXML-части упакованы не в zip-архив (как по умолчанию), а в единый xml-файл
Скорее речь о преобразовании openxml в excel 2003 xml.
... << RSDN@Home 1.2.0 alpha 5 rev. 66 on Windows 8 6.2.9200.0>>