C#读取大数据量Excel

var worksheet = workbook.Worksheets["工作表1"];
var maxN = worksheet.Range["A1"].End[excel.XlDirection.xlDown].Row;   //从A1向下查找最低下的一个数据行的坐标
object[,] arr = worksheet.Range["A2:H" + maxN].Value2;

 

转载于:https://www.cnblogs.com/ilookbo/p/4380723.html

发布了0 篇原创文章 · 获赞 13 · 访问量 5万+
展开阅读全文
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符

NPOI写入大数据到excel中,如何降低使用的内存,解决内存占用过大的问题

01-15

SystemManage.q_station_log qStationLogsys = new SystemManage.q_station_log(); //int allcount = qStationLogsys.GetAllCount(); int allcount = 100000; #region string filename = "xxxx.xls"; string path = "/exceldata/" + filename; string FilePathName = HttpContext.Current.Server.MapPath(path); System.IO.File.Delete(FilePathName); FileStream Fs = new FileStream(FilePathName, FileMode.Create); IWorkbook workbook = new HSSFWorkbook(); int sheetindex = 1; ISheet sheet = workbook.CreateSheet("￈xx" + sheetindex.ToString() + ""); int pagesize = 1000; int currentIndex = 1; int sheetcount = 0; #endregion int fornum = (allcount - allcount % pagesize) / pagesize + 1; while (currentIndex <= fornum) { DataSet ds = qStationLogsys.GetAllLogPart(pagesize, currentIndex); if (ds.Tables[0].Rows.Count > 0) { for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { if (sheetcount % 65535 == 0) { if (sheetindex != 1) { workbook.Write(Fs); //workbook.Clear(); Fs.Flush(); Fs.Close(); Fs.Dispose(); Fs = new FileStream(FilePathName, FileMode.Open); sheetcount = 0; sheet = workbook.CreateSheet("￈xxx" + sheetindex.ToString() + ""); } creat_title(sheet);//写入头的内容 sheetcount++; sheetindex++; creat_content(sheet, sheetcount, ds.Tables[0].Rows[i]); //写入内容 } else { creat_content(sheet, sheetcount, ds.Tables[0].Rows[i]); sheetcount++; } } } currentIndex++; ds.Clear(); } workbook.Write(Fs); workbook.Clear(); Fs.Flush(); Fs.Close(); Fs.Dispose(); //------------------------------------------------- 说明:代码如上,实现写入100000条数据,每次从数据库读取1000条,循环写入,当数据超过65535时,会新建一个工作簿。功能已经实现,但是每次写入内容占用过高,有什么方法可以改进,请教下,感激。。。。。 问答

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

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览