我正在使用EPPlus导出Excel。我已经完成了一些功能来获得“ExcelWorksheet”。我想在一个excel(每个标签一个)中使用它加入所有这些,但我不知道我该怎么做。
这是主要功能:
public ActionResult ExportReports(string sheetName)
{
try
{
var req = GetRequest();
var fileDownloadName = "OnlineReport.xlsx";
var contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
var package = new ExcelPackage();
var ws1 = AnalysisByAirCarrier(package, req);
var ws2 = Summary(package, req);
var fileStream = new MemoryStream();
package.SaveAs(fileStream);
fileStream.Position = 0;
var fsr = new FileStreamResult(fileStream, contentType);
fsr.FileDownloadName = fileDownloadName;
return fsr;
}
catch (Exception ex)
{
_logger.Error("Error ExportReports", ex);
}
}
我想在不同标签的同一个文件中加入ws1和ws2。
注意:ws1和ws2是ExcelWorksheet对象
任何想法?
感谢。
答案 0 :(得分:6)
您应该能够将工作表的副本作为标签添加到工作簿中:
using(var package = new ExcelPackage())
{
package.Workbook.Worksheets.Add("First worksheet 1", ws1);
package.Workbook.Worksheets.Add("First worksheet 2", ws2);
// Do something with the package
}
我不确定你在AnalysisByAirCarrier
和Summary
做了什么。
我还没有测试过,但是添加空白工作表并对它们进行操作对我来说就像预期的那样(它创建了多个标签,我可以用内容填充)
[edit]:更新“第一个工作表”评论
答案 1 :(得分:1)
var groupedSheetList = UserData.GroupBy(u => u.date).Select(grp => grp.ToList
()).ToList();
using (var package = new ExcelPackage ()) {
foreach (var item in groupedSheetList){
var workSheet = package.Workbook.Worksheets.Add (item[0].date);}}