NPOI导出Excel的例子(DataTable导出到03或07)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010188003/article/details/50417237
 /// <summary>
        /// DataTable导出Excel2007(.xlsx)
        /// </summary>
        /// <param name="dt">DataTable</param>
        /// <param name="file">文件路径(.xlsx)</param>
        /// <param name="sheetname">Excel工作表名</param>
        public static void TableToExcelForXLSX2007(DataTable dt, string file, string sheetname)
        {
            XSSFWorkbook xssfworkbook = new XSSFWorkbook();//建立Excel2007对象
            ISheet sheet = xssfworkbook.CreateSheet(sheetname);//新建一个名称为sheetname的工作簿
            //设置列名
            IRow row = sheet.CreateRow(0);
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                ICell cell = row.CreateCell(i);
                cell.SetCellValue(dt.Columns[i].ColumnName);
            }
            //单元格赋值
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                IRow row1 = sheet.CreateRow(i + 1);
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    ICell cell = row1.CreateCell(j);
                    cell.SetCellValue(dt.Rows[i][j].ToString());
                }
            }
            using (System.IO.Stream stream = File.OpenWrite(file))
            {
                //写入文件
                xssfworkbook.Write(stream);
                stream.Close();
            }
        }


        /// <summary>
        /// DataTable导出Excel2003(.xls)
        /// </summary>
        /// <param name="dt">DataTable</param>
        /// <param name="file">文件路径(.xls)</param>
        /// <param name="sheetname">Excel工作表名</param>
        public static void TableToExcelForXLSX2003(DataTable dt, string file, string sheetname)
        {
            HSSFWorkbook xssfworkbook = new HSSFWorkbook();//建立Excel2003对象
            HSSFSheet sheet = (HSSFSheet)xssfworkbook.CreateSheet(sheetname);//新建一个名称为sheetname的工作簿
            //设置列名
            HSSFRow row = (HSSFRow)sheet.CreateRow(0);
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                ICell cell = (ICell)row.CreateCell(i);
                cell.SetCellValue(dt.Columns[i].ColumnName);
            }
            //单元格赋值
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                IRow row1 = sheet.CreateRow(i + 1);
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    ICell cell = row1.CreateCell(j);
                    cell.SetCellValue(dt.Rows[i][j].ToString());
                }
            }
            using (System.IO.Stream stream = File.OpenWrite(file))
            {
                xssfworkbook.Write(stream);
                stream.Close();
            }

        }


说明:1、6W行以内的数据建议导出03文件,速度会比导07的快;6W以上的只能导出07,因为03最大的行数为65536行

    2、导出的文件是没有具体的样式的,可以通过HSSFCellStyle rowStyle = (HSSFCellStyle)workbook.CreateCellStyle();设置行和列的样式

            3、导出多个工作表可以传进DataSet,然后遍历DataSet的Table,遍历一次建立一个工作表,再赋值就行了

没有更多推荐了,返回首页