0

我正在使用 Gembox 电子表格将一些数据导出到 .CSV,但在输出文件中没有得到任何小数。

当导出为 XLSX 时,一切看起来都符合预期。

我已经尝试过 Gembox 3.7 和 3.9,但结果是一样的。

使用以下代码重现该问题。

        SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");

        var ef = new ExcelFile();

        var ws = ef.Worksheets.Add("NumberFormatTest");

        ws.Cells[0, 0].Value = "Expected";
        ws.Cells[1, 0].Value = "0";
        ws.Cells[2, 0].Value = "0.0";
        ws.Cells[3, 0].Value = "0.00";

        ws.Cells[0, 1].Value = "Actual";
        ws.Cells[1, 1].Value = 0m;
        ws.Cells[1, 1].Style.NumberFormat = "0";
        ws.Cells[2, 1].Value = 0m;
        ws.Cells[2, 1].Style.NumberFormat = "0.0";
        ws.Cells[3, 1].Value = 0m;
        ws.Cells[3, 1].Style.NumberFormat = "0.00";

        ef.Save("Numberformat test.csv");
        ef.Save("Numberformat test.xlsx");

我怎样才能得到正确的结果而不诉诸.ToString("0.00")

4

3 回答 3

1

如果对其他人感兴趣。我与他们的支持人员取得了联系,他们告诉我数字格式目前没有导出为 CSV 文件格式,应该使用以下解决方法。

foreach (var row in ws.Rows)
    foreach (var cell in row.AllocatedCells)
        if (cell.Value != null)
            cell.Value = cell.GetFormattedValue();


ef.Save("Numberformat test.csv");
于 2015-08-18T06:08:43.660 回答
0

对于较新的版本(GemBox.Spreadsheet 4.5 及更高版本),这可以通过使用该CsvSaveOptions.UseFormattedValues属性来简化。

例如,像这样:

var options = new CsvSaveOptions(CsvType.CommaDelimited);
options.UseFormattedValues = true;
ef.Save("Numberformat test.csv", options);
于 2021-07-12T08:48:55.767 回答
0

对于澳大利亚 VB 用户

    Dim enAU As CultureInfo = CultureInfo.CreateSpecificCulture("en-AU")
    Dim SaveOptions As New CsvSaveOptions(CsvType.CommaDelimited)
    With SaveOptions
        .FormatProvider = enAU
    End With

    For Each row In ws.Rows
        For Each cell In row.AllocatedCells
            If Not (String.IsNullOrEmpty(cell.Value)) Then
                cell.Value = cell.GetFormattedValue()
            End If
        Next
    Next

    ws.Save(sSaveAsFullFilename, New CsvSaveOptions(CsvType.CommaDelimited) With {.FormatProvider = enAU}) 
于 2018-03-20T22:02:22.030 回答