Преобразование Excel SpreadsheetML в открытый XML (XLSX) - PullRequest
4 голосов
/ 25 августа 2009

Простой вопрос. Кто-нибудь знает простой способ преобразования SpreadsheetML (Excel 2003 XML) в открытый документ XML, используемый для файлов Excel 2007 (xlsx)?

У меня есть библиотека, которая, к сожалению, не читает формат XML, поэтому мне нужно попытаться найти способ чтения данных, в котором нет другой библиотеки.

Любые предложения приветствуются.

Ответы [ 6 ]

2 голосов
/ 24 января 2011

Если у вас глубокие карманы, Aspose.Cells может читать / записывать оба формата и должен обеспечивать действительно простое преобразование без автоматизации.

http://www.aspose.com/categories/.net-components/aspose.cells-for-.net/default.aspx

Aspose.Cells для .NET

Aspose.Cells для .NET - отмеченный наградами компонент электронных таблиц, который позволяет разработчикам .NET встраивать возможность чтения, записи и манипулирования электронными таблицами Excel в свои собственные приложения без необходимости полагаться на Microsoft Excel.

Aspose.Cells for .NET - это зрелый, масштабируемый и многофункциональный компонент, который предлагает множество функций, выходящих далеко за рамки простых возможностей экспорта данных других поставщиков. С Aspose.Cells для .NET разработчики могут экспортировать данные, форматировать электронные таблицы до самого детального уровня, импортировать изображения, импортировать диаграммы, создавать диаграммы, применять и вычислять сложные формулы, передавать данные в Excel, сохранять в различных форматах и ​​многое другое - все это без необходимость использования Microsoft Excel или Microsoft Office Automation.

Цены начинаются от 899 долл. США на разработчика для корпоративной (внутренней) разработки и очень быстро растут.

1 голос
/ 25 октября 2011

Попробуйте использовать JODConverter . JODConverter позволяет конвертировать SpreadsheetML с использованием механизма OpenOffice.org или Libreoffice.

1 голос
/ 26 августа 2009

Формат файла действительно значительно изменился с SpreadsheetML на Office Open XML.

И, поскольку теперь файлы электронных таблиц разбиты на несколько файлов XML (которые все затем архивируются), нет реальной надежды на простое решение XLST.

Самым простым способом действий, к сожалению, является автоматизация Excel с использованием макроса для открытия каждого файла SpreadsheetML и выполнения операции «Сохранить как» в новом формате. Это можно сделать в Office 2003 с помощью подключаемого модуля формата файлов Office 2007. Возможно, это можно отнести к пакетному процессу, чтобы сервер не был вовлечен напрямую?

Если данные в электронных таблицах тривиальны и имеют согласованный формат, вы можете написать собственный анализатор для импорта непосредственно из файлов SpreadsheetML.

1 голос
/ 25 августа 2009

Самый простой способ - использовать COM-библиотеку Excel (Excel 2007), но я думаю, что это не тот ответ, который вы ищете.

На что способна ваша библиотека? Вы можете использовать Open XML SDK 2.0 для написания документа электронной таблицы на основе выходных данных вашей библиотеки.

С наилучшими пожеланиями

0 голосов
/ 30 января 2018

проверить этот код static void XlsToXlsx

static void XlsToXlsx (string sourceFile, string destinationFile)
{
    Type officeType = Type.GetTypeFromProgID("Excel.Application");

    Excel.Application app = new Excel.Application();
    app.DisplayAlerts = false;
    // Open Excel Workbook for conversion.
    Excel.Workbook excelWorkbook = app.Workbooks.Open(sourceFile);
    // Save file as CSV file.
    //excelWorkbook.SaveAs(destinationFile, Excel.XlFileFormat.xlCSV);
    excelWorkbook.SaveAs(destinationFile, Excel.XlFileFormat.xlOpenXMLWorkbook);
    // Close the Workbook.
    excelWorkbook.Close();
    // Quit Excel Application.
    app.Quit();
}
0 голосов
/ 25 августа 2009

IIRC формат Office 2003 работает подобно формату OpenDocument: это ZIP-файл с файлами XML внутри, поэтому (если у вас достаточно времени / смелости), вы можете открыть его, найти файл XML, содержащий данные, и, наконец, разобраться с XML .

Я знаю, этот ответ для смелых разработчиков;)

Привет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...