日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

.NET NPOI导出Excel详解

發布時間:2023/11/29 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET NPOI导出Excel详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://www.cnblogs.com/yinrq/p/5590970.html

?

?

.NET NPOI導出Excel詳解

NPOI,顧名思義,就是POI的.NET版本。那POI又是什么呢?POI是一套用Java寫成的庫,能夠幫助開發者在沒有安裝微軟Office的情況下讀寫Office的文件。

支持的文件格式包括xls, doc, ppt等。

官方網站:http://npoi.codeplex.com/

nuget直接獲取使用

一、NPOI生成Excel

//創建工作薄var workbook = new HSSFWorkbook();//創建表var table = workbook.CreateSheet("joye.net");//模擬20行20列數據for (var i = 0; i < 20; i++){var row = table.CreateRow(i);for (int j = 0; j < 20; j++){var cell = row.CreateCell(j);cell.SetCellValue(j);}}//打開xls文件,如沒有則創建,如存在則在創建是不要打開該文件using (var fs = File.OpenWrite(@"c:/joye.net.xls")){workbook.Write(fs); //向打開的這個xls文件中寫入mySheet表并保存。Console.WriteLine("生成成功");}

二、NPOI讀取Excel

using (var fs = File.OpenRead(@"c:/joye.net.xls")) {//把xls文件中的數據寫入workbook1中var workbook1 = new HSSFWorkbook(fs);for (var i = 0; i < workbook1.NumberOfSheets; i++){var sheet = workbook1.GetSheetAt(i);for (var j = 0; j <= sheet.LastRowNum; j++){ //讀取當前行數據var row = sheet.GetRow(j);if (row != null){for (var k = 0; k <= row.LastCellNum; k++){ //當前表格var cell = row.GetCell(k);if (cell != null){Console.Write(cell.ToString() + " ");}}}Console.WriteLine();}}}

讀出的結果

?三、簡單學習

?學習代碼 ?代碼調用

四、NPOI導出Excel 65536問題

public static HSSFWorkbook BuildWorkbook(DataTable dt){var book = new HSSFWorkbook(); ISheet sheet = book.CreateSheet("Sheet1");//Data Rowsfor (int i = 0; i < dt.Rows.Count; i++){IRow drow = sheet.CreateRow(i);for (int j = 0; j < dt.Columns.Count; j++){ICell cell = drow.CreateCell(j, CellType.String);cell.SetCellValue(dt.Rows[i][j].ToString());}}//自動列寬for (int i = 0; i <= dt.Columns.Count; i++)sheet.AutoSizeColumn(i, true);return book;}

NPOI導出Excel超過65536會報異常,原來是由于NPOI這個動態庫導致的,然后看了下版本,發現是1.2.5。然后百度了下,發現這個版本的NPOI只支持office2003,二office2003最多支持65536行

解決方式:

1、只是在插入數據的時候,加個判斷,如果數據條數大于65536時,就在創建一個sheet

//65536判斷處理public static HSSFWorkbook BuildWorkbook(DataTable dt){var book = new HSSFWorkbook();ISheet sheet1 = book.CreateSheet("Sheet1");ISheet sheet2 = book.CreateSheet("Sheet2");//填充數據for (int i = 0; i < dt.Rows.Count; i++){if (i < 65536){IRow drow = sheet1.CreateRow(i);for (int j = 0; j < dt.Columns.Count; j++){ICell cell = drow.CreateCell(j, CellType.String);cell.SetCellValue(dt.Rows[i][j].ToString());}}if (i >= 65536){IRow drow = sheet2.CreateRow(i - 65536);for (int j = 0; j < dt.Columns.Count; j++){ICell cell = drow.CreateCell(j, CellType.String);cell.SetCellValue(dt.Rows[i][j].ToString());}}}//自動列寬for (int i = 0; i <= dt.Columns.Count; i++){sheet1.AutoSizeColumn(i, true);sheet2.AutoSizeColumn(i, true);}return book;}

2、考慮使用高版本Office,使用用對象支持高版本的NPOI

//高版本public static XSSFWorkbook BuildWorkbook(DataTable dt){var book = new XSSFWorkbook();ISheet sheet = book.CreateSheet("Sheet1");//Data Rowsfor (int i = 0; i < dt.Rows.Count; i++){IRow drow = sheet.CreateRow(i);for (int j = 0; j < dt.Columns.Count; j++){ICell cell = drow.CreateCell(j, CellType.String);cell.SetCellValue(dt.Rows[i][j].ToString());}}//自動列寬for (int i = 0; i <= dt.Columns.Count; i++)sheet.AutoSizeColumn(i, true);return book;}

五、web開發中導出Excel

public static void ExportExcel(DataTable dt, string fileName = ""){//生成ExcelIWorkbook book = BuildWorkbook(dt);//web 下載if (fileName == "")fileName = string.Format("{0:yyyyMMddHHmmssffff}", DateTime.Now);fileName = fileName.Trim();string ext = Path.GetExtension(fileName);if (ext.ToLower() == ".xls" || ext.ToLower() == ".xlsx")fileName = fileName.Replace(ext, string.Empty);HttpResponse httpResponse = HttpContext.Current.Response;httpResponse.Clear();httpResponse.Buffer = true;httpResponse.Charset = Encoding.UTF8.BodyName;httpResponse.AppendHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls");httpResponse.ContentEncoding = Encoding.UTF8;httpResponse.ContentType = "application/vnd.ms-excel; charset=UTF-8";book.Write(httpResponse.OutputStream);httpResponse.End();}

?

基于.xls模板生成Excel文件有時間再看

代碼下載:https://yunpan.cn/cRBVnTCSchz7k (提取碼:779e)?

+ 關注

轉載于:https://www.cnblogs.com/lacey/p/6634004.html

總結

以上是生活随笔為你收集整理的.NET NPOI导出Excel详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。