【问题标题】:Spire Xls set cell range hexadesimal formatSpire Xls 设置单元格范围十六进制格式
【发布时间】:2018-05-18 15:55:15
【问题描述】:

我正在使用带有 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,其中有问题的列是字符串。

【问题讨论】:

    标签: c# excel format hex spire.xls


    【解决方案1】:

    我使用 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;
    }
    

    【讨论】:

    • 我想通了。问题出在对 InsertDataTable 的调用中。我将参数transType 传递为true,因此,数据表的string 列在excel 中创建了一个字符串列。
    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 2014-12-21
    • 2013-01-21
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多