C# Export to Excel xls
本文关键字:xls Excel to Export | 更新日期: 2023-09-27 18:01:50
我有一个方法,它当前将存储过程的结果导出到CSV文件。我的任务是将其更改为导出到XLS,但我遇到了一些麻烦。
代码:
protected void ExportFundingSummaryToExcelSA(Object sender, EventArgs e)
{
const string fileName = "METT Dashboard - Funding Summary";
const string rowFormat = "{0},{1},{2},{3},{4},{5}'n";
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment;filename=" + fileName + ".csv");
Response.Charset = "";
Response.ContentType = "text/csv";
GetCompanyGroupCode();
var sb = new StringBuilder();
sb.AppendFormat(rowFormat, "Sector", "Product Line", "Program Number", "Program Description","Participating Companies", "Gross");
var customerId = CurrentUser.Company.Id;
var year = 2015;
// Set Title Row
Response.Write(year + " Products Lines for: " + CurrentUser.Company.Name + " (" + customerId + ")'n");
// Set Generated Date (Report Created on: 9/29/2004 3:33:32 PM)
Response.Write("Report Created on: " + System.DateTime.Now.ToString() + "'n'n'n");
var fundingData = GetFundingData();
if (fundingData != null)
{
if (fundingData.Summary != null && fundingData.Summary.Count > 0)
{
var summaries = MoveSetAsidesDown(fundingData.Summary);
for (var i = 0; i < summaries.Count; i++)
{
if (fundingData.Programs != null && fundingData.Programs.Count > 0)
{
foreach (var program in fundingData.Programs)
{
if (program.PlId == summaries[i].PlId)
{
sb.AppendFormat(rowFormat,
SharePointUtil.ToCsvFriendly(summaries[i].SectorName),
SharePointUtil.ToCsvFriendly(summaries[i].PlName),
SharePointUtil.ToCsvFriendly(program.TargetId.ToString()),
SharePointUtil.ToCsvFriendly(program.TargetName),
SharePointUtil.ToCsvFriendly(program.ParticipantsCount.ToString()),
SharePointUtil.ToCsvFriendly(program.AmountAllocated.ToString("$###,###,###,##0")));
}
}
}
}
}
}
Response.Write(sb.ToString());
Response.Flush();
Response.End();
}
最大的问题是数据操作,一旦数据从GetFundingData返回,我必须这样做,因为我们的DBA不在,我需要把它敲掉。我以为我只需要改变内容类型就可以了,但这却让它泡影了。
我认为问题是你试图使用CSV格式创建一个XLS文件。CSV使用基于文本的格式,并用逗号分隔数据。XLS使用二进制格式。由于XLS是Microsoft文件格式,因此需要使用Excel的对象库来创建文件。我不知道您是否有这个选项,但是如果您可以在应用程序中包含EPPlus, EPPlus可以创建、打开和编辑XLSX文件。XLSX不是XLS,但2007版以后的任何版本的Excel都可以读取这两种类型。
[编辑]感谢Scott Chamberlain指出trevorggoodchild正在使用Sharepoint web服务。正如Scott Chamberlain在上面的评论中指出的,当使用IIS web服务时,Open XML SDK是一个选项。此外,由于EPPlus不使用COM互操作,它也可以在您的应用程序中使用。