在实际运用当中,我是将数据插入到EXCEL模板中,然后生成出带有数据的文档,并将生成的文档传入到FTP当中去的,这篇文章用来记录 怎么将数据插入到EXCEL模板中。
我的项目是winform程序,我将模板存放在exe程序的根目录下。在写这个方法的时候,我传入了三个参数
1、数据源 DataModel ;我的数据较多,写了一个类存放数据
2、模板路径 modelPath;首先获取该程序的根目录然后再加上模板的路径,我的在根目录又建了一个存放模板的文件夹名为“ExcelFile”,模板名字为 测试报告.xlsx
代码示例:string modelpath = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase +"ExcelFile\\" + "测试报告.xlsx";
3、Sheetname;也就是文档内的工作表名称
部分代码如下:
public int DataTableToModelExcelXZYHeadData(DataModel model, string modelPath, string sheetName){
//方法体
}
这样就有了数据和模板路径和sheet名,接下来看准备代码:
int count = 1;
IWorkbook modelwork = null;
ISheet sheet = null;
FileStream fsmodel = new FileStream(modelPath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
if (modelPath.IndexOf(".xlsx", System.StringComparison.Ordinal) > 0) // 2007版本
modelwork = new XSSFWorkbook(fsmodel);
else if (modelPath.IndexOf(".xls", System.StringComparison.Ordinal) > 0) // 2003版本
modelwork = new HSSFWorkbook(fsmodel);
根据后缀判断excel版本,不同版本解析方式是不一样的,确定完版本以后就开始获取sheet中的内容并赋值了,代码:
try
{
if (modelwork != null)
{
sheet = modelwork.GetSheet(sheetName);
}
else
{
return -1;
}
IRow row4 = sheet.GetRow(4);
ICell cell4_3 = row4.GetCell(3);
cell4_3.SetCellValue(record.HeadNumber);
IRow row5 = sheet.GetRow(5);
ICell cell5_6 = row5.GetCell(6);
cell5_6.SetCellValue(record.State == 1 ? "合格" : "不合格");
IRow row7 = sheet.GetRow(7);
ICell cell7_3 = row7.GetCell(3);
cell7_3.SetCellValue(record.PressToolNo);
modelwork.Write(fs); //写入到excel
return count;
}
catch (Exception ex)
{
Console.WriteLine("Exception: " + ex.Message);
return -1;
}
像这样对每一行进行赋值,最后写入到excel,我忘记保存路径怎么写了。后续我会在补充。
标签:modelwork,sheet,C#,Excel,生成,modelPath,版本,根目录,模板 From: https://blog.51cto.com/u_16371710/9238057