如何删除“;存储为文本的数字”;使用EPPLUS导出到Excel时提示

本文关键字:EPPLUS 使用 提示 Excel 数字 文本 删除 何删除 存储 | 更新日期: 2023-09-27 18:19:42

我已经使用EPPLUS将我的网格视图数据导出到excel中,但对于少数列,在打开导出的excel文件后,我会有"数字存储为文本"的绿色标记提示。

由于第一行是标题,我如何在导出到excel代码中进行编码,以更改从指定列的第二行开始的特定列的数据类型/转换为数字

如何删除“;存储为文本的数字”;使用EPPLUS导出到Excel时提示

我也遇到过类似的问题。正如Ordel Eraki所说:不要把价值串起来:

workSheet.Cells[1, 1].Value = 2; // Value is object

workSheet.Cells[1,1].Value=2.ToString()

您应该将字符串保存为int,而不是string。只要您希望单元格为数字,只需将单元格输入转换为int即可。

这意味着,在填充数据时,一定要将其填充为int

我已经在这里更新了您的代码
检查添加的代码。。
已编辑
我已经更改了DataTable的变量名,假设你正在做的事情。。GridView1GridView UI Control,如果将DataTable Name作为GridView1,代码可能会混淆什么是GridView1

protected void EXPORT_BUTTON_Click(object sender, EventArgs e)
{
    // Added Code
    int parseValue;
    bool isInt;
    ExcelPackage package = new ExcelPackage();
    ExcelWorksheet Grid = package.Workbook.Worksheets.Add("ORSA ASSESSMENTS");
    DataTable dt = new DataTable();
    for (int i = 0; i < dt.Columns.Count; i++)
    {
        // Update Type
        dt.Columns.Add("column" + i.ToString(), typeof(int));
    }
    foreach (GridViewRow row in GridView1.Rows)
    {
        DataRow dr = dt.NewRow();
        for (int j = 0; j < GridView1.Columns.Count; j++)
        {
            row.Cells[j].Text = row.Cells[j].Text.Replace("&nbsp;", " ");
            // Added Code
            isInt = int.TryParse(row.Cells[j].Text.Trim(), out parseValue);
            // Added Code
            if (isInt) 
                dr["column" + j.ToString()] = parseValue;
        }
        dt.Rows.Add(dr);
    }

    Grid.Cells["A1"].LoadFromDataTable(dt, true);
    using (ExcelRange rng = Grid.Cells["A1:Z1"])
    {
        rng.Style.Font.Bold = true;
    }
    Grid.Cells[ORSA.Dimension.Address].AutoFitColumns();

    var FolderPath = ServerName + DirectoryLocation + DirectoryFolder + ExportsFolder;
    var filename = ExcelName + @"_" + ".xlsx";
    var filepath = new FileInfo(Path.Combine(FolderPath, filename));
    Response.Clear();
    package.SaveAs(filepath);
    Response.AddHeader("content-disposition", "attachment; filename=" + filename + ";");
    Response.Charset = "";
    Response.ContentType = "application/vnd.xlsx";
    Response.TransmitFile(filepath.FullName);
    Response.End();
}


这是我模拟的样本,是一个工作示例

protected void Page_Load(object sender, EventArgs e)
{
    // Check
    if (!IsPostBack)
    {
        DataTable dt = new DataTable();
        // Create Column
        for(int i = 0; i < 5; i++)
            dt.Columns.Add("column" + i, typeof(int));
        for (int i = 0; i < 10; i++)
            dt.Rows.Add(i, i+1, i+2, i+3, i+4);
        GenerateExcel(dt);
    }
}
private void GenerateExcel(DataTable dt)
{
    using (ExcelPackage pkg = new ExcelPackage())
    {
        ExcelWorksheet ws = pkg.Workbook.Worksheets.Add("Sheet1");
        ws.Cells[1, 1].LoadFromDataTable(dt, true, OfficeOpenXml.Table.TableStyles.Light18);
        pkg.SaveAs(new FileInfo("C:''Test.xlsx"));
    }
}