c# 使用NPOI按模板导出excel

本文介绍了如何在C#中利用NPOI库按模板批量导出Excel文件。主要步骤包括:首先,通过查询获取数据集DataSet;接着,调用NPOI相关方法,支持一个模板对应一个数据Sheet的导出,或者多个模板对应多个数据Sheet的导出。
摘要由CSDN通过智能技术生成

 excel模板设置 

私车公用单  
 
 
申请信息  
申请单号: $header.ORDER_NO 申请日期: $header.CREATE_TIME $auotheight
申请部门: $header.APPLY_DEPT 申请人: $header.APPLY_USER $auotheight
项目: $header.PROJECT_RD_NAME 客户: $header.CUST_NAME $auotheight
出差单号: $header.BST_NO     $auotheight
用车信息  
派车日期 使用人 车辆类型车牌 用车事由 出发地  目的地 行驶路线  
$list.detail ASSIGN_DATE $CAR_OWNER $CAR_NUMBER $REASON $START_POINT $END_POINT $listend.ROUTE_NOTES $auotheight
签核信息  
序号 日期 步骤 签核部门 签核人 结果 签核意见  
$list.ad SEQ $EVENT_TIME $AUDIT_DESC $DEPT_NAME $USER_NAME $AUDIT_RESULT $listend.AUDIT_MARK $auotheight
                   

使用方式:

1.首先查询数据,DataSet ds=GetData(orderno);

2.然后调用,支持一个sheet模板导出多个数据sheet,多个sheet模板导出多个数据sheet

 
 
            string fpath =  "私车公用单.xls";

            ExcelHelper.Helper excel = new ExcelHelper.Helper();


            NPOI241.SS.UserModel.IWorkbook workbook = excel.Export(fpath, (book) =>
            {

                List<ExcelHelper.Helper.ExcelHelperSheetInfo> sinfo = new List<ExcelHelper.Helper.ExcelHelperSheetInfo>();
                ExcelHelper.Helper.ExcelHelperSheetInfo info = new ExcelHelper.Helper.ExcelHelperSheetInfo();
                sinfo.Add(info);

                info.ModelSheet = book.GetSheetAt(0);
                info.NewSheetData = new List<object>();
               
                Hashtable ht = new Hashtable();
                info.NewSheetData.Add( ht);

                ht.Add("header", ds.Tables[0].Rows[0]);
                ht.Add("detail", ds.Tables[1].DefaultView);
                ht.Add("ad",ds.Tables[2].DefaultView);

                return sinfo;
            }, (book, sheet, info) => {
                sheet.ProtectSheet("123456");
            });

 

using Newtonsoft.Json;
using NPOI241.HSSF.Record;
using NPOI241.HSSF.UserModel;
using NPOI241.HSSF.Util;
using NPOI241.SS.UserModel;
using NPOI241.SS.UserModel.Charts;
using NPOI241.SS.Util;
using NPOI241.XSSF.UserModel;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Web;

namespace WebPortal.Common.ExcelHelper
{
    public struct SimpleCell
    {
        /// <summary>
        /// 文本
        /// </summary>
        public string T { get; set; }

        /// <summary>
        /// colspan
        /// </summary>
        public int C { get; set; }
        /// <summary>
        /// rowspan
        /// </summary>
        public int R { get; set; }

        /// <summary>
        /// 样式 文本颜色,背景颜色,字体是否加粗,对齐,宽度
        /// </summary>
        public string S { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        public string RK { get; set; }

    }


    public struct SimpleChart
    {
        /// <summary>
        /// 标题
        /// </summary>
        public string Title { get; set; }
        /// <summary>
        /// 类型 chart类型  bar和line
        /// </summary>
        public string Type { get; set; }
        /// <summary>
        /// 数据起始单元格
        /// </summary>
        public int Col1 { get; set; }
        /// <summary>
        /// 数据起始行
        /// </summary>
        public int Row1 { get; set; }

        /// <summary>
        /// 数据结束单元格
        /// </summary>
        public int Col2 { get; set; }
        /// <summary>
        /// 数据结束行
        /// </summary>
        public int Row2 { get; set; }

        /// <summary>
        /// 是否应用右边Y轴,默认左边Y轴
        /// </summary>
        public bool RightY { get; set; }
    }

    public class SimpleTable
    {
        /// <summary>
        /// 行数据如
        /// </summary>
        public List<List<SimpleCell>> Rows { get; set; }

        /// <summary>
        /// 
使用NPOI库在C#中实现导入导出Excel数据可以按照以下步骤进行: 1. 首先,确保已经将NPOI库添加到你的C#项目中。你可以通过NuGet包管理器搜索并安装"NPOI"来添加这个库。 2. 创建一个Excel文件并写入数据: ```csharp using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System.IO; // 创建一个Workbook对象 IWorkbook workbook = new XSSFWorkbook(); // 创建一个Sheet对象 ISheet sheet = workbook.CreateSheet("Sheet1"); // 写入数据行 for (int i = 0; i < data.Count; i++) { IRow row = sheet.CreateRow(i); // 写入数据列 for (int j = 0; j < data[i].Count; j++) { row.CreateCell(j).SetCellValue(data[i][j]); } } // 保存文件 using (FileStream fileStream = new FileStream("path/to/excel.xlsx", FileMode.Create)) { workbook.Write(fileStream); } ``` 3. 从Excel文件读取数据: ```csharp using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System.IO; // 打开Excel文件 using (FileStream fileStream = new FileStream("path/to/excel.xlsx", FileMode.Open, FileAccess.Read)) { IWorkbook workbook = new XSSFWorkbook(fileStream); // 获取第一个Sheet ISheet sheet = workbook.GetSheetAt(0); List<List<string>> data = new List<List<string>>(); // 遍历行 for (int i = 0; i <= sheet.LastRowNum; i++) { IRow row = sheet.GetRow(i); List<string> rowData = new List<string>(); // 遍历列 for (int j = 0; j < row.LastCellNum; j++) { ICell cell = row.GetCell(j); rowData.Add(cell.ToString()); } data.Add(rowData); } // 处理读取到的数据 // ... } ``` 这是一个简单的示例,你可以根据自己的需求进行扩展和修改。记得替换代码中的文件路径为你的实际路径。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值