C#导出到Excel xls

我有一个方法,目前将存储过程的结果导出到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中返回,数据处理就是一个大问题,我必须这样做,因为我们的数据库pipe理系统已经不在了,而且我需要把这个数据删除。 我以为我可以只是改变内容types,但它吹了起来。 任何帮助,将不胜感激。

我认为这个问题是你试图使用CSV格式来创build一个XLS文件。 CSV使用基于文本的格式,用逗号分隔数据。 XLS使用二进制格式 。 因为XLS是Microsoft文件格式,您将需要使用Excel的对象库来创build文件。 我不知道你是否有这个select,但是如果你可以在你的应用程序中包含EPPlus, EPPlus可以创build,打开和编辑XLSX文件。 XLSX不是XLS,但2007版后的任何版本的Excel都可以读取这两种types。

[编辑]

感谢Scott Chamberlain指出TrevorGoodchild正在使用Sharepointnetworking服务。 正如Scott Chamberlain在他上面的评论中指出的,当使用IIS Web服务时, Open XML SDK是一个选项。 另外,由于EPPlus不使用COM Interop,因此它也可以在您的应用程序中使用。