npoi 导出

        public void Output(DataTable table, string SheetName, string reportName)
{
string result = string.Empty;
try
{
HSSFWorkbook workBook = new HSSFWorkbook();
ISheet sheet = workBook.CreateSheet(SheetName); //sheet页名称
NPOI.SS.UserModel.IFont font = workBook.CreateFont();
font.FontName = "微软雅黑"; font.FontHeight = 175;
ICellStyle style = workBook.CreateCellStyle();
style.Alignment = HorizontalAlignment.Center;
style.VerticalAlignment = VerticalAlignment.Center;
style.SetFont(font);
style.WrapText = true; IRow rows = sheet.CreateRow(0);
rows.Height = 400;
rows.CreateCell(0).SetCellValue(reportName); //报表名称
rows.GetCell(0).CellStyle = style;
sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, table.Columns.Count - 1)); rows = sheet.CreateRow(1);
for (int i = 0; i < table.Columns.Count; i++)
{
rows.CreateCell(i).SetCellValue(table.Columns[i].ColumnName.ToString());
rows.Sheet.SetColumnWidth(i, 4000);
rows.GetCell(i).CellStyle = style;
}
ICellStyle style2 = workBook.CreateCellStyle();
style2.Alignment = HorizontalAlignment.Left;
style2.VerticalAlignment = VerticalAlignment.Center;
style2.SetFont(font);
style2.DataFormat = HSSFDataFormat.GetBuiltinFormat("@"); //style2.WrapText = true;
int tem = 0;
int sheetCount = 1;
for (int j = 1; j <= table.Rows.Count; j++)
{
tem++;
if (tem == 60000)//每页最多导出60000
{
tem =0;
sheetCount++;
sheet = workBook.CreateSheet(SheetName + sheetCount);
rows = sheet.CreateRow(0);
for (int i = 0; i < table.Columns.Count; i++)
{
rows.CreateCell(i).SetCellValue(table.Columns[i].ColumnName.ToString());
rows.Sheet.SetColumnWidth(i, 4000);
rows.GetCell(i).CellStyle = style;
}
}
IRow row = sheet.CreateRow(tem + 1);
for (int k = 0; k < table.Columns.Count; k++)
{
row.CreateCell(k).SetCellValue(table.Rows[j - 1][k].ToString());
row.Sheet.SetColumnWidth(k, 4000);
row.GetCell(k).CellStyle = style2;
}
#region
//Row row = sheet.CreateRow(j + 1);
//for (int k = 0; k < table.Columns.Count; k++)
//{
// row.CreateCell(k).SetCellValue(table.Rows[j - 1][k].ToString());
// row.GetCell(k).CellStyle = style2;
//}
#endregion
} int maxColumn = table.Columns.Count;
//列宽自适应,只对英文和数字有效
//for (int i = 0; i <= maxColumn; i++)
//{
// sheet.AutoSizeColumn(i);
//} using (MemoryStream ms = new MemoryStream())
{
workBook.Write(ms);
ms.Flush();
ms.Position = 0;
workBook = null; HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";//HttpContext.Current.Response string browser = HttpContext.Current.Request.Browser.Browser.ToString();
string header = string.Empty;
if (browser == "Firefox")
{
header = string.Format("attachment; filename={0}", string.Format("{0}-{1}.xls", reportName, DateTime.Now.ToString("yyyy-MM-dd")), Encoding.UTF8).ToString();
}
else
{
header = string.Format("attachment; filename={0}", HttpUtility.UrlEncode(string.Format("{0}-{1}.xls", reportName, DateTime.Now.ToString("yyyy-MM-dd")), Encoding.UTF8)).ToString();
}
HttpContext.Current.Response.AddHeader("Content-Disposition", header);
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.BinaryWrite(ms.GetBuffer());
HttpContext.Current.Response.End();
}
}
catch
{
throw new Exception("导出异常");
}
}

  

最新文章

  1. maven工程pom.xml文件解读
  2. AIX下禁止crs随ha启动而启动
  3. JSP页面用EL表达式 输出date格式
  4. 谈谈分布式事务之三: System.Transactions事务详解[下篇]
  5. 最好的JAVA IDE IntelliJ IDEA使用简介(一)—之界面元素
  6. 在eclipse上安装 Marketplace Client
  7. Effective Objective-C 2.0 笔记三(Literal Syntax简写语法)
  8. PHP奇怪现象
  9. C++学习(五)入门篇——基本类型
  10. (NO.00002)iOS游戏精灵战争雏形(五)
  11. Kotlin For Android 示例代码实战
  12. vue2.0 微信分享
  13. 【慕课网实战】六、以慕课网日志分析为例 进入大数据 Spark SQL 的世界
  14. if 循环的深入理解 哈希表的一种应用
  15. Linux操作_磁盘管理_增加虚拟磁盘
  16. javascript中 try catch用法
  17. BZOJ 3680: 吊打XXX (模拟退火)
  18. gitlab 邮件服务器配置
  19. 算法训练 Cowboys(DP)
  20. Unity www动态加载网上图片

热门文章

  1. 关于python中的包,模块导入的问题详解(二)
  2. Python特色数据类型--元组
  3. python — 进程
  4. 大数据学习(2)- export、source(附带多个服务器一起启动服务器)
  5. IntelliJ IDEA 2017.3.2 热加载(Hot Swap)
  6. WCF寄宿windows服务二
  7. MFC下调试 出现 Warning: initial dialog data is out of range.
  8. 帝国cms 通过栏目获取某个栏目的详情
  9. 6 java 笔记
  10. Lua入门记录