Существуют ли какие-либо сторонние инструменты, позволяющие импортировать данные XML в Excel? - PullRequest
0 голосов
/ 15 апреля 2011

В настоящее время мы работаем над приложением, которое использует COM Interop в C # для импорта данных в книгу Excel. Эти данные довольно сложны и длинны, поэтому мы использовали функцию импорта из XML в Excel. Из-за проблем с запуском Excel на сервере мы сейчас переходим к стороннему решению для создания нашей книги, такому как SpreadsheetGear или Aspose.

SpreadsheetGear и Aspose не поддерживают импорт XML. Кто-нибудь знает о другом стороннем, дружественном к серверу инструменте, который делает?

- Edit-- Данные поступают из базы данных DB2, которую мы помещаем в классы C #, а затем сериализуем в XML. Затем мы импортируем XML в около 30 таблиц и других ячеек. Затем мы копируем и вставляем таблицы в выходной лист и повторно используем оригиналы, чтобы импортировать больше.

- Edit-- На выходе получается форма с несколькими таблицами и полями на одном листе. Часть того, с чем помогает карта XML, - отслеживание местоположения ячеек без необходимости массового жесткого кодирования координат ячеек в коде.

Ответы [ 4 ]

1 голос
/ 15 апреля 2011

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

Это все равно будет довольно легко реализовать.

1 голос
/ 20 апреля 2011

Хотя я не нашел стороннего инструмента, который бы позволял эту функцию, Aspose.Cells имеет функцию «Smart Marker», которая позволяет вам обозначать определенные ячейки способом, подобным карте XML.Я считаю, что это может быть решением, которое я искал.

1 голос
/ 15 апреля 2011

Вы можете посмотреть на SSIS.Это средство, в котором вы можете установить XML в качестве источника данных и электронную таблицу в качестве места назначения.(Или наоборот).

0 голосов
/ 30 сентября 2011

Загрузите XML в набор данных, затем с помощью EPPlus извлеките данные из Excel и создайте из них файл Excel:

DataSet ds = new DataSet();
            DataTable dt = ds.Tables[0];
            using (ExcelPackage pck = new ExcelPackage())
            {
                //Create the worksheet
                ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Calls");

                //Load the datatable into the sheet, starting from cell A1. Print the column names on row 1
                ws.Cells["A1"].LoadFromDataTable(dt, true);

                Byte[] bin = pck.GetAsByteArray();

                string file = filePath;
                File.WriteAllBytes(file, bin);

            }
...