0

我正在使用 Spire Xls 和 c# 来创建 Excel 文档。问题出在我的一个专栏上,它是一个十六进制字符串。在大多数情况下,列的单元格是可以的,但是,当十六进制字符串仅包含数字(和“E”字符)时,这些单元格以数字格式显示

**

例子:

** 92995E85(原始字符串)-> 9.2995E+89(单元格结果)

我想将原始字符串保留在单元格中。

这是我的代码:

Workbook workbook = new Workbook();
workbook.Version = ExcelVersion.Version2013;

var ws = workbook.ActiveSheet;
ws.InsertDataTable(report, true, 1, 1);

for (int i = 1; i <= 9; i++)
    ws.AutoFitColumn(i);

using(var fs = new FileStream(options.ReportPath.Trim(), FileMode.Create)) {
    //cerrar bien el filestream para q escriba a disco
    workbook.SaveToStream(fs);
    workbook.Dispose();
}

report变量是 a ,有问题的DataTable列是字符串。

4

1 回答 1

0

我使用 Spire.XLS 进行了测试,但无法重现该问题。我建议您将数字格式设置为文本,然后重试。这是我的代码:

{
    Workbook workbook = new Workbook();
    Worksheet sheet = workbook.Worksheets[0];
    DataTable dt = GetData();

    //Set the number format of the first column as text
    //sheet.Columns[0].NumberFormat = "@";
    sheet.InsertDataTable(dt, false, 1, 1, false);

    workbook.SaveToFile("InsertData.xlsx", ExcelVersion.Version2010);
}

private static DataTable GetData()
{
    DataTable dt = new DataTable();
    dt.Columns.Add("column1", typeof(string));
    dt.Columns.Add("column2", typeof(DateTime));
    DataRow row = dt.NewRow();
    row[0] = "92995E85";
    row[1] = "00:00";
    dt.Rows.Add(row);
    row = dt.NewRow();
    row[0] = "333";
    //row[1] = "2";
    dt.Rows.Add(row);
    return dt;
}

在此处输入图像描述

于 2018-05-21T03:08:59.917 回答