Spire Xls设置单元格范围为hexadesimal格式

时间:2018-05-18 15:55:16

标签: c# excel format hex spire.xls

我正在使用带有c#的Spire Xls来创建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变量是DataTable,其中有问题的列为字符串。

1 个答案:

答案 0 :(得分: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;
}

enter image description here