В C # у меня есть DataTable, который имеет допустимые значения, некоторые из которых представлены в экспоненциальном формате.Я экспортирую этот DataTable в файл xlsx, используя ExtremeML (который, как мне кажется, основан на OpenXML) и следующий код:
if (!Directory.Exists(savePath.Text))
Directory.CreateDirectory(savePath.Text);
using (var package = SpreadsheetDocumentWrapper.Create(savePath.Text + fileName + ".xlsx"))
{
for (int i = 0; i < dataset.Tables.Count; i++)
{
// declares worksheet
var part = package.WorkbookPart.WorksheetParts.Add(dataset.Tables[i].TableName.ToString()); // second worksheet filled by second collection
bool first = true;
int position = 0;
for (int row = 0; row < dataset.Tables[i].Rows.Count; row++)
{
for (int col = 0; col < dataset.Tables[i].Columns.Count; col++)
{
// adds to file
if (first)
part.Worksheet.SetCellValue(new GridReference(row, col), dataset.Tables[i].Columns[col].ColumnName.ToString());
else
part.Worksheet.SetCellValue(new GridReference(row, col), dataset.Tables[i].Rows[position][col]);
}
if (first)
{
first = false;
}
else
position++;
}
}
}
Полученный файл Excel почти приемлем, за исключением отрицательных экспоненциальных отрицательных чисел (например,-7.45E-05) обрабатывать знак минус как цифру (предыдущий пример становится 0,000-745).В столбце DataTable все столбцы установлены как двойные, поэтому файл Excel должен форматировать их так.
Есть идеи относительно причины этой проблемы?(Кроме того, я знаю, что код - неприятное занятие, код не мой, и я не удосужился очистить программу.)