C# NPOI组件实现DateTable数据转到相应的Excel模板中

4 篇文章 0 订阅

//导出通用方法

不是最好的方案,仅供借鉴参考,直接看代码吧!

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System;
using System.Data;
using System.IO;

namespace Test
{
    public class ExcelHelper
    {
        /// <summary>
        /// DataTable转Excel文件
        /// </summary>
        /// <param name="dt">数据源</param>
        /// <param name="modelExlPath">模板相对路径</param>
        /// <param name="startRow">从哪一行开始 0</param>
        /// <param name="path">相对路径</param>
        /// <returns></returns>
        public static bool DataTableToExcel(DataTable dt, string modelExlPath,int startRow,string path)
        {
            string tmpRootDir = AppDomain.CurrentDomain.BaseDirectory;//获取程序根目录 

            try
            {
                XSSFWorkbook hssfworkbookDown;   //创建一个excel对象
                                                 //读入刚复制的要导出的excel文件
                using (FileStream file = new FileStream(tmpRootDir + modelExlPath, FileMode.Open, FileAccess.Read))  //路径,打开权限,读取权限
                {
                    hssfworkbookDown = new XSSFWorkbook(file);
                    file.Close();
                }
                //模版的一个页面在GetSheetAt方法中,这里取第一个页面是0
                XSSFSheet sheet1 = (XSSFSheet)hssfworkbookDown.GetSheetAt(0);
                //开始向excel表格中写入数据
                for (int i = 0; i < dt.Rows.Count; i++)
                {

                   //从哪一行开始录入 动态变量

                    IRow row = sheet1.CreateRow(i + startRow);
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {

                          ICell cell = row.CreateCell(j);
                        cell.SetCellValue(dt.Rows[i][j].ToString());
                    }
                }

                //创建文件
                using (FileStream files = new FileStream(tmpRootDir + path, FileMode.Create))
                {
                    hssfworkbookDown.Write(files);
                }
            }
            catch (Exception e)
            {
                return false;
            }
            return true;
        }

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值