C#生成Excel文件

在实际运用当中,我是将数据插入到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,我忘记保存路径怎么写了。后续我会在补充。

 

posted @ 2023-04-01 15:35  给自己个晚安  阅读(816)  评论(0编辑  收藏  举报