В настоящее время я разрабатываю компонент для нашего приложения, который позволяет нам создавать лист Excel без необходимости владения Excel клиентами. Так что на ум пришел Open XML.
Что не работает на данный момент, так это парсинг дат.
Это мой рабочий лист:
<?xml version="1.0" encoding="UTF-8"?>
<x:worksheet xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<x:cols>
<x:col min="1" max="1" width="42.42" customWidth="1" />
<x:col min="2" max="2" width="42.56" customWidth="1" />
<x:col min="3" max="3" width="16.27" customWidth="1" />
</x:cols>
<x:sheetData>
<x:row r="1">
<x:c r="A1">
<x:v>FF kijken hoe dit werkt snap er geen fu** van</x:v>
</x:c>
<x:c r="B1">
<x:v>This is some really, really long text to display.</x:v>
</x:c>
<x:c r="C1" s="0">
<x:v>40651.6777777778</x:v>
</x:c>
</x:row>
</x:sheetData>
</x:worksheet>
Это моя таблица стилей:
<?xml version="1.0" encoding="UTF-8"?>
<x:styleSheet xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<x:numFmts count="1">
<x:numFmt numFmtId="164" formatCode="dd-mm-yy hh:mm" />
</x:numFmts>
<x:fonts count="1">
<x:font>
<x:sz val="11" />
<x:name val="Arial" />
</x:font>
</x:fonts>
<x:cellXfs count="1">
<x:xf numFmtId="164" fontId="0" fillId="0" borderId="0" xfId="0"` applyNumberFormat="1" />
</x:cellXfs>
</x:styleSheet>
Это код, который я использую для получения своих дат.
cell.StyleIndex = 0; .
string columnValue = date.ToOADate().ToString().Replace(",", ".");
//string columnValue = date.ToOADate().ToString().
Replace(CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator, ".");
cell.CellValue = new CellValue(columnValue);
Результат не тот, что я хочу. Я получу двойное значение с даты, а не с даты в созданной мной таблице стилей.
Я получу это 40651,67778 вместо 18-4-2011 16:16