datatable导出到excel NPOI组件

 /// <summary>
        /// datatable导出到excel
        /// </summary>
        /// <param name="dtSource">datatable</param>
        /// <param name="strFileName">strFileName</param>
        /// <param name="sup">Supplier</param>
        /// <returns></returns>
        public static bool ExportEasy(DataTable dtSource, string strFileName, Supplier sup)
        {
            try
            {
                HSSFWorkbook workbook = new HSSFWorkbook();
                //HSSFSheet sheet = workbook.CreateSheet();
                ISheet sheet = workbook.CreateSheet();
                //填充表头
                //HSSFRow dataRow = sheet.CreateRow(0);
                IRow dataRow = sheet.CreateRow(0);
                //foreach (DataColumn column in dtSource.Columns)
                //{
                //    dataRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName);
                //}
                //合并单元格
                dataRow.CreateCell(2).SetCellValue(sup.SupplierCode);
                SetCellRangeAddress(sheet, 0, 0, 0, 1);
                dataRow.CreateCell(0).SetCellValue("供应商代码:");
                SetCellRangeAddress(sheet, 0, 0, 3, 4);
                dataRow.CreateCell(3).SetCellValue("供应商名称:");
                SetCellRangeAddress(sheet, 0, 0, 5, 7);
                dataRow.CreateCell(8).SetCellValue("专柜编码:");
                SetCellRangeAddress(sheet, 0, 0, 21, 22);
                dataRow.CreateCell(21).SetCellValue("经营方式:");
                dataRow.CreateCell(5).SetCellValue(sup.SupplierName);
                dataRow.CreateCell(9).SetCellValue(sup.SpecialCode);
                dataRow.CreateCell(23).SetCellValue(sup.ModeOperation);

                //填充内容
                for (int i = 1; i < dtSource.Rows.Count; i++)
                {
                    dataRow = sheet.CreateRow(i + 1);
                    for (int j = 1; j < dtSource.Columns.Count; j++)
                    {
                        if (j > 19)
                        {
                            if (j == 20)
                                continue;
                            else
                            {
                                if (j > 23)
                                {
                                    if (j == 24)
                                        continue;
                                    else
                                    {
                                        dataRow.CreateCell(j).SetCellValue(dtSource.Rows[i - 1][j - 2].ToString());
                                    }
                                }
                                else
                                {
                                    dataRow.CreateCell(j).SetCellValue(dtSource.Rows[i - 1][j - 1].ToString());
                                }
                            }

                        }
                        else
                        {
                            dataRow.CreateCell(j).SetCellValue(dtSource.Rows[i - 1][j].ToString());
                        }

                    }
                }

                //保存
                using (MemoryStream ms = new MemoryStream())
                {
                    using (FileStream fs = new FileStream(strFileName, FileMode.Create, FileAccess.Write))
                    {
                        workbook.Write(fs);
                    }
                }
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        /// <summary>
        /// 合并单元格
        /// </summary>
        /// <param name="sheet">要合并单元格所在的sheet</param>
        /// <param name="rowstart">开始行的索引</param>
        /// <param name="rowend">结束行的索引</param>
        /// <param name="colstart">开始列的索引</param>
        /// <param name="colend">结束列的索引</param>
        public static void SetCellRangeAddress(ISheet sheet, int rowstart, int rowend, int colstart, int colend)
        {
            CellRangeAddress cellRangeAddress = new CellRangeAddress(rowstart, rowend, colstart, colend);
            sheet.AddMergedRegion(cellRangeAddress);
        }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值