dotnetcore / dotnetcore/Magicodes.IE

模板导入并生成多个Sheet

Open
#502 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C#
Stars
2.2k
Forks
495
PR merge metrics
No merged PRs in 30d

Description

目前用模板导出数据时发现,我想要导出同一个文件,但数据放到多个sheet里面。
目前解决方案是先导出多个模板文件到本地,本地通过读数据流后再进行ExcelPackage合并多个Excel,但这样很不灵活比较麻烦。
是否可以通过多个数据源导出一个文件,只是文件是生成多个sheet
以下代码是根据业务进行简单处理,没有过多优化。仅供参考
` ///
/// 合并Excel
///
/// 需要合并的文件
/// 合并后的文件名称
///
private async Task MergeExcel(string[] files, string resultFile)
{
resultFile = $"{resultFile}.xlsx";
if (files.Any() && files.Count() > 1)
{
ExcelPackage masterPackage = new ExcelPackage(new FileInfo(files[0]));
foreach (var file in files.Where(x => x != files[0]))
{
ExcelPackage pckg = new ExcelPackage(new FileInfo(file));

foreach (var sheet in pckg.Workbook.Worksheets)
{
string workSheetName = sheet.Name;
var i = 0;
foreach (var masterSheet in masterPackage.Workbook.Worksheets)
{
if (sheet.Name == masterSheet.Name)
{
workSheetName = string.Format("{0}{1}", workSheetName, i++);
}
}

//add new sheet
masterPackage.Workbook.Worksheets.Add(workSheetName, sheet);
}
}
masterPackage.SaveAs(new FileInfo(resultFile));
}
else
resultFile = files[0];
//删除对应文件
foreach (var item in files)
{
if (File.Exists(item))
{
File.Delete(item);
}
}
await Task.CompletedTask;
return new FileStream($"{resultFile}", FileMode.Open, FileAccess.Read);
}`

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.