Spire Xls устанавливает диапазон ячеек в шестнадцатеричном формате - PullRequest
0 голосов
/ 18 мая 2018

Я использую 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 представляет собой DataTable с проблемным столбцом в виде строки.

1 Ответ

0 голосов
/ 21 мая 2018

Я протестировал 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

...