ASP.NET导出数据超六万条,判断生成多sheet导出;

it2022-05-05  97

//导出 case "Export": //每页导出的数据; int sheet = 60000; DataTable dtN; dtN = DataAccess.GetTable("SELECT * FROM 表名"); if (dtN.Rows.Count > 0) { HSSFWorkbook workbook = ExcelHelperNPOI.GetTemplateWorkbook("DownLoad/导出模板.xls"); //获取模板导出的格式,此模板要求为.xls, //sheet HSSFSheet sheet2 = null; //文件中数据表 int sheetCount = 0; int rowcount = 0; //循环将数据写入特定的位置 for (int i = 0; i < dtN.Rows.Count; i++) { //rowcount相当于sheet后的数字,前六万条为sheet1,第二个六万条++成2 rowcount++; if (i % sheet == 0) { sheetCount++; sheet2 = ((HSSFSheet)workbook.GetSheet("sht")).CopySheet("Sheet" + sheetCount.ToString()); //没输出六万条数据行数就归零,从下一个sheet的第二行开始输出 rowcount = 1; } //循环导出数据 sheet2.CreateRow(rowcount).CreateCell(0).SetCellValue(dtN.Rows[i]["StuName"].ToString()); sheet2.GetRow(rowcount).CreateCell(1).SetCellValue(dtN.Rows[i]["StuID"].ToString()); } workbook.SetSheetHidden(workbook.GetSheetIndex("sht"), true);//隐藏sht模板 MemoryStream stream = new MemoryStream(); workbook.Write(stream); NPOIHelper.RenderToBrowser(stream, HttpContext.Current, "***导出数据.xls");//输出文件 } //无数据导出是提示 else { Alert("****数据导出"); }

最新回复(0)