zoukankan      html  css  js  c++  java
  • C#中使用NPOI进行DataTable和Excel互转

            /// <summary>
            /// 读取excel文件数据到DataTable
            /// </summary>
            /// <param name="filePath"></param>
            /// <param name="deleteFile"></param>
            /// <returns></returns>
            public static DataTable ReadExcelToTable(string filePath, bool deleteFile = false)
            {
                using (var tempFile = new FileStream(filePath, FileMode.Open))
                {
                    var workbook = new HSSFWorkbook(tempFile);
                    var sheet = workbook.GetSheetAt(0);
                    var dataTable = new DataTable();
                    var tableHeadRow = sheet.GetRow(0);
                    for (int i = 0; i < tableHeadRow.PhysicalNumberOfCells; i++)
                    {
                        var headCell = tableHeadRow.Cells[i];
                        dataTable.Columns.Add(new DataColumn(headCell.StringCellValue));
                    }
                    for (int i = 1; i < sheet.PhysicalNumberOfRows; i++)
                    {
                        var row = sheet.GetRow(i);
                        var newRow = dataTable.NewRow();
                        for (int j = 0; j < row.PhysicalNumberOfCells; j++)
                        {
                            var cell = row.Cells[j];
                            newRow[j] = cell.StringCellValue;
                        }
                        dataTable.Rows.Add(newRow);
                    }
                    workbook.Clear();
                    workbook.Close();
                    if (deleteFile)
                    {
                        File.Delete(filePath);
                    }
                    return dataTable;
                }
            }
          
            /// <summary>
            /// 将datatable转化为Excel
            /// </summary>
            /// <param name="dataTable"></param>
            /// <returns></returns>
            public static string DataTableToExcel(DataTable dataTable)
            {
                var dt = dataTable;
                var filePath = HttpContext.Current.Server.MapPath("/ExportTemplete/" + Guid.NewGuid() + ".xls");
                using (var fileStream = new FileStream(filePath, FileMode.OpenOrCreate))
                {
                    var workBook = new HSSFWorkbook();
                    var sheet = workBook.CreateSheet();
    
                    IRow headRow = sheet.CreateRow(0);
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        ICell cell = headRow.CreateCell(i);
                        cell.SetCellValue(dt.Columns[i] == null ? "" : dt.Columns[i].ToString());
                    }
                    if (dt != null && dt.Rows.Count > 0)
                    {
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            IRow newRow = sheet.CreateRow(i + 1);
                            for (int j = 0; j < dt.Columns.Count; j++)
                            {
                                ICell cell = newRow.CreateCell(j);
                                cell.SetCellValue(dt.Rows[i][j] == null ? "" : dt.Rows[i][j].ToString());
                            }
                        }
                    }
                    workBook.Write(fileStream);
                    workBook.Clear();
                    workBook.Close();
                }
                return filePath;
            }

     /// <summary>        /// 读取excel文件数据到DataTable        /// </summary>        /// <param name="filePath"></param>        /// <param name="deleteFile"></param>        /// <returns></returns>        public static DataTable ReadExcelToTable(string filePath, bool deleteFile = false)        {            using (var tempFile = new FileStream(filePath, FileMode.Open))            {                var workbook = new HSSFWorkbook(tempFile);                var sheet = workbook.GetSheetAt(0);                var dataTable = new DataTable();                var tableHeadRow = sheet.GetRow(0);                for (int i = 0; i < tableHeadRow.PhysicalNumberOfCells; i++)                {                    var headCell = tableHeadRow.Cells[i];                    dataTable.Columns.Add(new DataColumn(headCell.StringCellValue));                }                for (int i = 1; i < sheet.PhysicalNumberOfRows; i++)                {                    var row = sheet.GetRow(i);                    var newRow = dataTable.NewRow();                    for (int j = 0; j < row.PhysicalNumberOfCells; j++)                    {                        var cell = row.Cells[j];                        newRow[j] = cell.StringCellValue;                    }                    dataTable.Rows.Add(newRow);                }                workbook.Clear();                workbook.Close();                if (deleteFile)                {                    File.Delete(filePath);                }                return dataTable;            }        }              /// <summary>        /// 将datatable转化为Excel        /// </summary>        /// <param name="dataTable"></param>        /// <returns></returns>        public static string DataTableToExcel(DataTable dataTable)        {            var dt = dataTable;            var filePath = HttpContext.Current.Server.MapPath("/ExportTemplete/" + Guid.NewGuid() + ".xls");            using (var fileStream = new FileStream(filePath, FileMode.OpenOrCreate))            {                var workBook = new HSSFWorkbook();                var sheet = workBook.CreateSheet();
                    IRow headRow = sheet.CreateRow(0);                for (int i = 0; i < dt.Columns.Count; i++)                {                    ICell cell = headRow.CreateCell(i);                    cell.SetCellValue(dt.Columns[i] == null ? "" : dt.Columns[i].ToString());                }                if (dt != null && dt.Rows.Count > 0)                {                    for (int i = 0; i < dt.Rows.Count; i++)                    {                        IRow newRow = sheet.CreateRow(i + 1);                        for (int j = 0; j < dt.Columns.Count; j++)                        {                            ICell cell = newRow.CreateCell(j);                            cell.SetCellValue(dt.Rows[i][j] == null ? "" : dt.Rows[i][j].ToString());                        }                    }                }                workBook.Write(fileStream);                workBook.Clear();                workBook.Close();            }            return filePath;        }

  • 相关阅读:
    js验证身份证号,超准确
    ORACLE 日期加减操作
    powerdesigner中将表的name在生成建表sql时生成注释
    使用Lucene-Spatial实现集成地理位置的全文检索
    MyEclipse + Maven开发Web工程的详细配置过程
    tomcat虚拟目录配置
    在jsp的js和css里面使用EL表达式取值|style里面用$取值
    JS禁用键盘浏览器退格键
    Am335x SD卡刷eMMC二
    Linux-UDP-Socket编程
  • 原文地址:https://www.cnblogs.com/zjbky/p/12467530.html
Copyright © 2011-2022 走看看