【问题标题】:ClosedXML convert percentage in template模板中的 ClosedXML 转换百分比
【发布时间】:2020-11-26 20:26:57
【问题描述】:

我正在使用 closedXML 生成一个包含 3 列的简单模板。

要创建此模板,我正在使用此代码:

protected void btnTemplate_Click(object sender, EventArgs e)
        {
            DataTable dt = new DataTable();
            var tipo = "TARGET";
            if (ddlTipo.SelectedValue == "RESULTADO")
            {
                tipo = "RESULTADO";
            }
            dt.Columns.AddRange(new DataColumn[3] { 
           new DataColumn("BU", typeof(string)),
          new DataColumn("MÉTRICA", typeof(string)),
          
          new DataColumn(tipo,typeof(string)) });
            //Exporting to Excel
            
            //Codes for the Closed XML
            using (XLWorkbook wb = new XLWorkbook())
            {
                
                var worksheet = wb.Worksheets.Add(dt, "BASE");
                worksheet.Cell("C1").DataType = XLDataType.Text;

                //wb.SaveAs(folderPath + "DataGridViewExport.xlsx");
                string myName = ("Template.xlsx");
                MemoryStream stream = GetStream(wb);// The method is defined below
                Response.Clear();
                Response.Buffer = true;
                Response.AddHeader("content-disposition",
                "attachment; filename=" + myName);
                Response.ContentType = "application/vnd.ms-excel";
                Response.BinaryWrite(stream.ToArray());
                Response.End();
            }


        }

它工作正常,问题出在C列,它可以接收百分比,它改变了excel中的类型。

有没有办法强制在 closedXML 中列 C 始终被视为 TEXT?不转换数字。我尝试使用 worksheet.Cell("C1").DataType = XLDataType.Text;强制作为文本,但它不起作用。

【问题讨论】:

  • 尝试使用setter,worksheet.Column("C").SetDataType(XLDataType.Text);

标签: c# closedxml


【解决方案1】:

嗯,我从来没有使用过 closedXML 我评估 EPPLUS(版本 4.5.3.3 是完全免费的), 但是我有很多像你这样的情况,我所做的就是将列的类型设置为文本, 在封闭的 xml 中你可以这样做:

worksheet.Cell(rowIndex, columnIndex).Style.NumberFormat.Format = "@";

但是有一个更简单的解决方案适用于任何 Excel XML 库! 您可以手动创建并保存在项目中的文件夹中,而不是使用代码创建您的 excel 模板。使用 Excel 界面本身设置您想要的任何属性保存它,然后使用封闭的 xml 打开文件,并在任何您想要的地方设置值。最后“另存为”某处(不要覆盖模板)并做你需要的。

这样做有很多好处:

1 - 创建模板的时间(与编码相比)。

2 - 减少你的代码。

3 - 您可以更轻松地放置公式。

4 - 无需更改代码即可修改模板。

5 - 任何懂一点 Excel 的人都可以更改模板。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多