npoi导出超过65000行excel分sheet页。
来源:互联网 发布:mac装win7未能启动 编辑:程序博客网 时间:2024/04/30 01:19
直接上代码,引用对应的dll,就好啦,这边写在是在baseController 里,判断的是6W行换Sheet,逻辑很简单就不细说了,
public virtual FileResult NpoiExcel(DataTable dt, string title) { NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook(); int SheetNum = 1; int tempIndex = 1; //标示 NPOI.SS.UserModel.ISheet sheet = book.CreateSheet("Sheet" + SheetNum); NPOI.SS.UserModel.IRow headerrow = sheet.CreateRow(0); ICellStyle style = book.CreateCellStyle(); style.Alignment = HorizontalAlignment.CENTER; style.VerticalAlignment = VerticalAlignment.CENTER; for (int i = 0; i < dt.Columns.Count; i++) { ICell cell = headerrow.CreateCell(i); cell.CellStyle = style; cell.SetCellValue(dt.Columns[i].ColumnName); } //数据 for (int i = 0; i < dt.Rows.Count; i++) { IRow row1 = sheet.CreateRow(tempIndex); for (int j = 0; j < dt.Columns.Count; j++) { ICell cell = row1.CreateCell(j); cell.SetCellValue(dt.Rows[i][j].ToString()); } if (tempIndex == 60000) { SheetNum++; sheet = book.CreateSheet("Sheet" + SheetNum);// tempIndex = 0; headerrow = sheet.CreateRow(0); style = book.CreateCellStyle(); style.Alignment = HorizontalAlignment.CENTER; style.VerticalAlignment = VerticalAlignment.CENTER; for (int m = 0; m < dt.Columns.Count; m++) { ICell cell = headerrow.CreateCell(m); cell.CellStyle = style; cell.SetCellValue(dt.Columns[m].ColumnName); } } tempIndex++; } MemoryStream ms = new MemoryStream(); book.Write(ms); ms.Seek(0, SeekOrigin.Begin); return File(ms, "application/vnd.ms-excel", string.Format("{0}.xls", HttpUtility.UrlEncode(title + "_" + DateTime.Now.ToString("yyyy-MM-dd"), System.Text.Encoding.UTF8))); }
顺便在贴个读取。
/// <summary> /// 读取Excel文件到DataSet中 /// </summary> /// <param name="filePath">文件路径</param> /// <returns></returns> public virtual DataSet ExcelToDataSet(string filePath) { string connStr = ""; string fileType = System.IO.Path.GetExtension(filePath); if (string.IsNullOrEmpty(fileType)) return null; filePath = Server.MapPath("~" + filePath); if (fileType == ".xls") connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filePath + ";" + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\""; else connStr = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + filePath + ";" + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\""; string sql_F = "Select * FROM [{0}]"; OleDbConnection conn = null; OleDbDataAdapter da = null; DataTable dtSheetName = null; DataSet ds = new DataSet(); try { // 初始化连接,并打开 conn = new OleDbConnection(connStr); conn.Open(); // 获取数据源的表定义元数据 string SheetName = ""; dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); // 初始化适配器 da = new OleDbDataAdapter(); for (int i = 0; i < dtSheetName.Rows.Count; i++) { SheetName = (string)dtSheetName.Rows[i]["TABLE_NAME"]; if (SheetName.Contains("$") && !SheetName.Replace("'", "").EndsWith("$")) { continue; } da.SelectCommand = new OleDbCommand(String.Format(sql_F, SheetName), conn); DataSet dsItem = new DataSet(); da.Fill(dsItem, SheetName); ds.Tables.Add(dsItem.Tables[0].Copy()); } } catch (Exception ex) { Log(ex); } finally { // 关闭连接 if (conn.State == ConnectionState.Open) { conn.Close(); da.Dispose(); conn.Dispose(); } } return ds; }
阅读全文
0 0
- npoi导出超过65000行excel分sheet页。
- 导出数据到Excel 2003 单个Sheet页(NPOI)
- 分sheet导出excel 大数据量导出
- 导出excel,并支持分sheet导出
- JXL实现excel导出案例(分sheet页)
- JXL实现excel导出案例(分sheet页)
- 导出数据到Excel 2007 多个Sheet页(NPOI)(web版)
- NPOI导出EXCEL数据量大,分多个sheet显示数据
- Excel-数据分类导出至多个Sheet NPOI.dll
- C#导出分Sheet的Excel文件
- C#导出分Sheet的Excel文件
- C#导出分Sheet的Excel文件
- ASP.NET 分Sheet导出EXCEL 2003
- Excel动态分sheet页
- Java导出Excel Sheet页
- NPOI导出Excel
- 利用npoi导出excel
- NPOI导出Excel
- linux 自定义全局环境变量设置
- 坑
- HDU 6105 Gameia【思维+博弈】
- CSU 1803: 2016 (省赛真题)
- 【c++】基本数据类型
- npoi导出超过65000行excel分sheet页。
- 【字符串入门专题1】【hdu4763】【未ac题】【扩展kmp exkmp】
- Python 井字棋
- 从Android/Java基础之上学习C/C++语言(7)--C语言基础--IO
- linux创建用户
- CSS垂直居中的11种实现方式
- VirtualBox Centos7 双网卡配置
- 第11篇-JAVA IO
- [Lintcode 397] 最长上升连续子序列(Python)