ExtremeML负指数导出问题

在C#中,我有一个DataTable具有有效值,其中一些是指数格式。 我将这个DataTable导出到使用ExtremeML(我相信基于OpenXML)和下面的代码的xlsx文件:

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文件应该像这样格式化它们。

有关这个问题的原因的任何想法? (另外,我知道代码是一个痛苦的触摸 – 代码不是我的,我还没有到处去清理程序。)

你的示例代码似乎很好。

这看起来像ExtremeML转换双打的方式中的一个错误。 正如你所说,它似乎只影响负指数负数。

我目前正在debugging它,并创build额外的unit testing来覆盖这些场景,之后我会将更新的代码提交给CodePlex并在此处发布更新。

编辑:这个错误现在已经修复。 您需要从CodePlex下载并构buildExtremeML源代码,因为运行时版本当前不是最新版本。