C# 我怎样才能删除“;“存储为文本的数字”;使用EPPLUS导出到Excel时提示?

C# 我怎样才能删除“;“存储为文本的数字”;使用EPPLUS导出到Excel时提示?,c#,asp.net,export-to-excel,epplus,C#,Asp.net,Export To Excel,Epplus,我已经使用EPPLUS将gridview数据导出到excel,但是对于一些列,在打开导出的excel文件后,我会出现绿色标记“数字存储为文本”提示 由于第一行是标题,我如何在导出到excel代码中编码以更改指定列的第二行开始的特定列的数据类型/转换为数字?您应该将字符串保存为int而不是字符串。无论何时,只要将单元格输入转换为数字,就可以将单元格输入转换为int 这意味着,在填充数据时,请确保将其填充为int我已在此处更新了您的代码 检查添加的代码。。 已编辑 假设您正在做的事情,我已经更改

我已经使用EPPLUS将gridview数据导出到excel,但是对于一些列,在打开导出的excel文件后,我会出现绿色标记“数字存储为文本”提示


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

您应该将字符串保存为
int
而不是
字符串。无论何时,只要将单元格输入转换为数字,就可以将单元格输入转换为
int


这意味着,在填充数据时,请确保将其填充为
int

我已在此处更新了您的代码
检查添加的代码。。
已编辑
假设您正在做的事情,我已经更改了
DataTable
的变量名
GridView1
是一个
GridView UI控件
,如果将
DataTable名称
设置为
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();

}
protectedvoid导出按钮\单击(对象发送方,事件参数e)
{
//添加代码
int值;
布尔伊斯特;
ExcelPackage=新的ExcelPackage();
Excel工作表网格=package.Workbook.Worksheets.Add(“ORSA评估”);
DataTable dt=新的DataTable();
对于(int i=0;i

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

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"));
    }
}
受保护的无效页面加载(对象发送方,事件参数e)
{
//检查
如果(!IsPostBack)
{
DataTable dt=新的DataTable();
//创建列
对于(int i=0;i<5;i++)
添加(“列”+i,类型(int));
对于(int i=0;i<10;i++)
添加(i,i+1,i+2,i+3,i+4);
发电机励磁(dt);
}
}
专用void GenerateExcel(数据表dt)
{
使用(ExcelPackage pkg=new ExcelPackage())
{
Excel工作表ws=pkg.Workbook.Worksheets.Add(“Sheet1”);
Cells[1,1].LoadFromDataTable(dt,true,OfficeOpenXml.Table.TableStyles.Light18);
pkg.SaveAs(新文件信息(“C:\\Test.xlsx”);
}
}

我也有类似的问题。如前所述:不要将值字符串化:

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

工作表.Cells[1,1].Value=2.ToString()

数据表中
数据类型
将其设置为
Int
。它不会显示。。如果单元格中只有
Number
会要求您将其存储为
Number
,而不是
Text
,则Excel中显示的原因将给出假设,但是,由于我的标题是一个字符串,它可以将整个列转换为int。因此,我如何排除作为要排除的excel第一行的标题?您好,我尝试了您的解决方案,但没有改变任何内容。原因是我还有其他列(未显示在图像中),它们的数据类型是字符串。因此,如果我想改变你的代码。我的字符串将出现错误thn。谢谢,我也了解您正在使用的方法,我将看到一个错误,我无法将字符串隐式更改为intHi,在那里我尝试将字符串填充为int,但失败了。嗨@Nic,您有ide a吗?如何设置excel中填充的所有单元格的全部边框?@JamesBoer您可以在LoadFromDataTable中使用样式。。。。例如
ws.Cells[1,1].LoadFromDataTable(dt,true,OfficeOpenXml.Table.TableStyles.Light18)通过在Excel中创建表格,然后悬停样式编号,可以轻松找到样式