У меня есть программа на C #, которая читает книгу Excel и затем создает файл XML, который может быть запущен для XSLT.Проблема, которая возникла, состоит в том, что одно из полей является числом, и при чтении его из таблицы Excel значение изменяется.Вот пример:
Электронная таблица Excel считывается, и данные загружаются в таблицу данных.Один из способов сделать это - взять созданный мной документ электронной таблицы и передать ссылку на ячейку в этот метод здесь:
dataRow[columnIndex] = GetCellValue(spreadSheetDocument, cell);
private static string GetCellValue(SpreadsheetDocument document, Cell cell)
{
//This process uses the OpenXML SDK to get individual cells values to populate the DataTable
SharedStringTablePart stringTablePart = document.WorkbookPart.SharedStringTablePart;
string value = "";
//One of the things that needed to be accounted for was empty cells
try
{
value = cell.CellValue.InnerXml;
}
catch (Exception)
{
value = "";
}
//Setting cell data type right now just sets everything to strings
//Later, the better option will be to work on the Date Conversions and Data Types here
if (cell.DataType != null && cell.DataType.Value == CellValues.SharedString)
{
return stringTablePart.SharedStringTable.ChildElements[Int32.Parse(value)].InnerText;
}
else
{
return value;
}
}
Так, например, если ячейка, в которой она читает, равна 115, тогда вывод выглядит так:
114.99999999999999
Затем в других случаях, если значение равно 125, вывод выглядит так:
125.00000000000001
несоответствие в выводе немногоозадачивает.Я надеялся, что, возможно, мне удастся лучше понять причину этого, чем просто исправить это позже в XSLT.