Я хотел бы использовать Excel Функция XML Map из C# на стороне сервера в веб-приложении. Карты XML позволяют связать схему XML с книгой и указать, какие ячейки соответствуют частям схемы. Оттуда вы можете импортировать XML-файлы для обновления значений ячеек и экспортировать XML-файлы, содержащие последние значения (т. е. если они были изменены вручную). Вы можете сделать это вручную на вкладке «Разработчик» в Excel.
У нас уже есть лицензия на Aspose Cells, но (несмотря на некоторую недавнюю работу в этой области) похоже, что она не полностью поддерживает карты XML. Кто-нибудь добился успеха в этом?
Я создал тест с использованием Excel Interop, который работает (т.е. может программно настроить XML-карту и использовать ее как для импорта, так и для экспорта значений). Это сводится к следующему:
XmlMap map = workbook.XmlMaps.Add(xmlSchema, Missing.Value);
// map cell C3 to the question text
var worksheet = (Worksheet)workbook.Worksheets[1];
Range cell = (Range)worksheet.Cells[3, 3];
cell.XPath.Clear(); // just in case
cell.XPath.SetValue(map, "/Root/Question/Text", Missing.Value, false);
// import the XML to populate the mapped cells
map.ImportXml(xmlData, true);
Однако это не совсем подходит для использования на сервере, потому что оно основано на запуске процесса Excel в фоновом режиме.
Можно ли использовать Open XML SDK от Microsoft импортировать или экспортировать XML через карту XML? Я нашел класс Map. , но я думаю, что это просто метаданные уже существующей карты. Содержит ли SDK подобную логику преобразования или он просто представляет содержимое рабочего листа в виде классов?