c#中调用Excel

            //获得Excel类型
            Type excel = Type.GetTypeFromProgID("Excel.Application");
            //创建对象
            object excelobject = Activator.CreateInstance(excel);
            //设置调用参数
            object[] par = new object[] { true };
            //调用对象的属性,将可见属性设置为true
            excel.InvokeMember("Visible",BindingFlags.SetProperty,null,excelobject,par);
            //显示时间
            Thread.Sleep(10000);
C# 中使用 Excel 模板填充数据后另存为新文件,可以借助像 **EPPlus** 或 **ClosedXML** 这样的库来实现。以下是一个使用 EPPlus 的示例方法,展示如何基于模板文件填充数据并保存为新文件: ### 一、读取 Excel 模板文件并填充数据 ```csharp using OfficeOpenXml; using System.Data; public void FillExcelTemplate(string templatePath, string outputFilePath, DataTable dataTable) { // 设置 EPPlus 的 LicenseContext(适用于版本 5+) ExcelPackage.LicenseContext = LicenseContext.NonCommercial; using (var package = new ExcelPackage(new FileInfo(templatePath))) { // 获取第一个工作表 var worksheet = package.Workbook.Worksheets[0]; // 假设模板中的数据从第二行开始,第一行为标题 int startRow = 2; for (int i = 0; i < dataTable.Rows.Count; i++) { for (int j = 0; j < dataTable.Columns.Count; j++) { // 将 DataTable 中的数据填充到对应单元格 worksheet.Cells[startRow + i, j + 1].Value = dataTable.Rows[i][j]; } } // 另存为新文件 var outputFileInfo = new FileInfo(outputFilePath); package.SaveAs(outputFileInfo); } } ``` ### 二、调用方法并传递数据 ```csharp // 创建一个示例 DataTable DataTable dt = new DataTable("MyData"); dt.Columns.Add("姓名"); dt.Columns.Add("年龄"); dt.Rows.Add("张三", "25"); dt.Rows.Add("李四", "30"); // 模板路径和输出路径 string templatePath = @"C:\path\to\template.xlsx"; string outputFilePath = @"C:\path\to\output.xlsx"; // 调用填充方法 FillExcelTemplate(templatePath, outputFilePath, dt); ``` ### 三、注意事项 - **EPPlus** 适用于非商业用途时是免费的,但商业用途需要购买许可证[^1]。 - 如果使用的是 **ClosedXML**,则代码结构略有不同,但核心思想一致,即读取模板、填充数据、另存为新文件。 - 确保模板文件的格式与代码中处理的行列结构一致,否则可能导致数据错位。 ### 四、使用 ClosedXML 的替代方案 ```csharp using ClosedXML.Excel; public void FillExcelTemplateWithClosedXML(string templatePath, string outputFilePath, DataTable dataTable) { using (var workbook = new XLWorkbook(templatePath)) { var worksheet = workbook.Worksheet(1); int startRow = 2; for (int i = 0; i < dataTable.Rows.Count; i++) { for (int j = 0; j < dataTable.Columns.Count; j++) { worksheet.Cell(startRow + i, j + 1).Value = dataTable.Rows[i][j]; } } workbook.SaveAs(outputFilePath); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值