【发布时间】: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);