使用 C# 填充包含 SQL Server 中表中的列的现有 Excel 模板
本文关键字:Excel 模板 包含 SQL Server 使用 填充 | 更新日期: 2023-09-27 18:33:16
我的 C# 项目需要生成 excel 报告。我有一个现有的 excel 模板,其中包含要从 SQL Server 表和某些字段(例如 TestCasePassed、TestCaseFailed 等)填充值的列。在该要用代码中的值填充的 Excel 模板中。
即Excel模板格式
测试用例通过: 测试用例失败:
日期:
姓名指定薪资测试状态
此过程需要 C# 代码。提前谢谢。
我实际上是C#的新手,我对如何继续没有太多想法,但是是的,我必须使用Microsoft.Interop来完成。
必须有 100 种方法可以做到这一点,如果没有你更具体,这个问题可能比其他任何问题都更基于意见。
如果我有这个任务(并假设有相当少量的记录)与现有的数据库,我会做
- 实体框架数据库首先到现有 sql 数据库
- 从数据库中获取条目
- 使用 EPPlus 写入电子表格
因此,我最终可能会得到这样的代码:
List<Entry> FromDb()
{
List<Entry> res;
using (var dbContext = new MyEntities()
{
res = dbContext.Where(e=>MeetsMyFilterCriteria(e)).ToList()
}
return res;
}
Main()
{
FileInfo fileInfo = new FileInfo("path/to/excelTemplateFile.xlsx");
using (var excelPackage = new ExcelPackage(fileInfo))
{
ExcelWorksheet sheet = excelPackage.Workbook.Worksheets["MyWorksheenName"];
BaseRange startRange = sheet.Range["A2"] //or wherever data is to go
int offset=0;
foreach (entry in FromDb())
{
startRange.Offset(offset,0).Value = entry.PropertyA;
startRange.Offset(offset,1).Value = entry.PropertyB;
startRange.Offset(offset,2).Value = entry.PropertyC;
// and so on ...
offset++;
}
excelPackage.SaveAs("path/to/excelOutput.xls");
}
}
这种方法很好且易于实现,但不能很好地扩展到数十万行的 1000 个导出,但前提是我们谈论的是少量行和相对较少的导出,性能不佳可以忽略不计,并被易于实现所抵消。
您可以使用 EasyXLS Excel 库。从 SQL Server 表创建查询并填充数据集。加载现有 Excel 模板并将数据集插入到工作表中。
//Load Excel template
ExcelDocument template = new ExcelDocument();
template.easy_LoadXLSXFile("template.xlsx");//or easyLoadXLSFile for xls file (xltx/xlt)
//Get the sheet from the Excel file
ExcelWorksheet sheet = (ExcelWorksheet)template.easy_getSheetAt(0);
//Populate the sheet with SQL table values
sheet.easy_insertDataset(dataSet, false);
有关如何填充数据集或如何设置单元格格式的更多详细信息,请查看有关如何将数据集导出到 Excel 的更多代码示例。