ActionResult:
var strLawTable = new StringBuilder();
strLawTable.Append("<thead>");
strLawTable.Append("<tr>");
strLawTable.Append("<th style=\"text-align: right\">Dollar</th>");
strLawTable.Append("</tr>");
strLawTable.Append("</thead>");
strLawTable.Append("<tbody>");
foreach (Currency currency in Model.List)
{
strLawTable.Append("<tr>");
strLawTable.Append("<th style=\"text-align: right\">=\"" + GetExcellFormatString(Currency.USD) + "\"</th>");
strLawTable.Append("</tr>");
}
strLawTable.Append("</tbody>");
string headerTable = "<table>" + strLawTable + "</table>";
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=TestFile.xls");
Response.ContentType = "application/ms-excel";
Response.ContentEncoding = System.Text.Encoding.Unicode;
Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());
System.IO.StringWriter sw = new System.IO.StringWriter();
sw.Write(headerTable);
System.Web.UI.HtmlTextWriter hw = new HtmlTextWriter(sw);
Response.Write(sw.ToString());
Response.End();
GetExcellFormatString
方法:
public string GetExcellFormatString(double doubleAmount)
{
if (doubleAmount < 1000)
return doubleAmount.ToString("0.00");
else if (doubleAmount < 1000000)
return doubleAmount.ToString("0000.00");
else if (doubleAmount < 1000000000)
return doubleAmount.ToString("0000,000.00");
else if (doubleAmount < 1000000000000)
return doubleAmount.ToString("0000000000.00");
else return doubleAmount.ToString();
}
我的问题:
将数据导出到Excel文件后,我的Excel表格中有值,
导出的Excel表格
元
50.0
35.0
40.0
60.0
etc..
如果我按到“ ctrl ”并使用鼠标35.0和40.0 点击,Excel 无法合计35.0和40.0 因为 35.0是字符串显示“35.0”而40.0是字符串显示“40.0”。
问题是关于总和选定的行但是我不能求和,因为值是字符串而不是数字
如何通过C#代码删除Excel表格中的字符串编号“”?
感谢。
答案 0 :(得分:1)
要删除引号,请更改此行:
strLawTable.Append("<th style=\"text-align: right\">=\"" + GetExcellFormatString(Currency.USD) + "\"</th>");
^^remove ^^remove
到此:
strLawTable.Append("<th style=\"text-align: right\">=" + GetExcellFormatString(Currency.USD) + "</th>");
答案 1 :(得分:0)
如果您不反对使用第三方库,则有以下解决方案: http://www.codeproject.com/Articles/692092/A-free-Export-to-Excel-Csharp-class-using-OpenXML
它使用OpenXML库(可通过nuget获得)。
它就像一个魅力 - 好吧,如果您的数据中只有整数和字符串。但它可以定制。要查看的方法是WriteDataTableToExcelWorksheet(DataTable dt, WorksheetPart worksheetPart)
,您必须处理不同的数据类型(Double
,Decimal
,DateTime
...)。在获取数字列的字符串值时,我还建议使用number.ToString(CultureInfo.InvariantCulture)
。否则会出现同样的问题:该列不会被识别为正确的数字(最好是文本列,或者单元格中会出错)。
您还可以在列中设置数字的自定义格式(如果您确实需要使用特定的数字格式):http://lateral8.com/articles/2010/6/11/openxml-sdk-20-formatting-excel-values.aspx