1. //使用NPOI操作Excel
  2. private void ExcelNPOI(System.Data.DataTable dt, HttpContext context)
  3. {
  4. IWorkbook workbook = null;//工作薄
  5. IRow row = null;//行
  6. ICell cell = null;//单元格
  7. ISheet sheet = null;//工作表
  8. try
  9. {
  10. //如果表中查询的有数据
  11. if (dt != null && dt.Rows.Count > )
  12. {
  13. //创建工作薄
  14. //workbook = new HSSFWorkbook(); //导出后缀为xls
  15. workbook = new XSSFWorkbook();//导出后缀为xlsx
  16. sheet = workbook.CreateSheet("Sheet1");//创建一个名称为Sheet1的表
  17. int rowCount = dt.Rows.Count;//行数
  18. int columnCount = dt.Columns.Count;//列数
  19.  
  20. //npoi设置Excel样式
  21. ICellStyle cellStyle = workbook.CreateCellStyle();
  22. //设置单元格为数字格式
  23. cellStyle.DataFormat = workbook.CreateDataFormat().GetFormat("0.00");
  24. //居中对齐
  25. cellStyle.Alignment = HorizontalAlignment.Center;
  26. cellStyle.VerticalAlignment = VerticalAlignment.Center;
  27. //边框
  28. cellStyle.BorderTop = BorderStyle.Thin;
  29. cellStyle.BorderBottom = BorderStyle.Thin;
  30. cellStyle.BorderLeft = BorderStyle.Thin;
  31. cellStyle.BorderRight = BorderStyle.Thin;
  32. //创建一个字体样式对象
  33. NPOI.SS.UserModel.IFont FontRow = workbook.CreateFont();
  34. //设置字体样式
  35. FontRow.FontName = "宋体";
  36. //设置字体加粗样式
  37. FontRow.Boldweight = (short)FontBoldWeight.Bold;
  38. //设置字体大小
  39. FontRow.FontHeightInPoints = ;
  40. //是否加粗
  41. //FontRow.IsBold = false;
  42. //字体样式添加进去
  43. cellStyle.SetFont(FontRow);
  44.  
  45. //合并单元格 起始行号,终止行号, 起始列号,终止列号 execl的行列都是从0开始,而不是从1开始
  46. sheet.AddMergedRegion(new CellRangeAddress(, , , ));
  47.  
  48. //添加第一行 并赋值
  49. row = sheet.CreateRow();
  50. row.CreateCell().SetCellValue("值");
  51. cell = row.GetCell();
  52. cell.CellStyle = cellStyle;
  53. //添加第二行 定义表头
  54. row = sheet.CreateRow();
  55. //单元格赋值
  56. row.CreateCell().SetCellValue("值");
  57. row.CreateCell().SetCellValue("值");
  58. row.CreateCell().SetCellValue("值");
  59. row.CreateCell().SetCellValue("值");
  60. row.CreateCell().SetCellValue("值");
  61. row.CreateCell().SetCellValue("值");
  62.  
  63. //设置列宽
  64. sheet.SetColumnWidth(, * );
  65. sheet.SetColumnWidth(, * );
  66. sheet.SetColumnWidth(, * );
  67. sheet.SetColumnWidth(, * );
  68. sheet.SetColumnWidth(, * );
  69. sheet.SetColumnWidth(, * );
  70.  
  71. //设置行高 第一行
  72. row = sheet.GetRow();
  73. row.Height = short.Parse((22.5 * ).ToString());
  74. //使用SetFont方法将字体样式添加到单元格样式中
  75. cellStyle.SetFont(FontRow);
  76.  
  77. //设置行高 第二行
  78. row = sheet.GetRow();
  79. row.Height = short.Parse((18.5 * ).ToString());
  80. //获得第二行的单元格
  81. List<ICell> cells = row.Cells;
  82. for (int i = ; i < cells.Count; i++)
  83. {
  84. //获得当前行
  85. cell = row.GetCell(i);
  86. //设置样式
  87. cell.CellStyle = cellStyle;
  88. }
  89.  
  90. //写入数据
  91. for (int i = ; i < rowCount; i++)
  92. {
  93. //创建新行
  94. row = sheet.CreateRow(i + );
  95. //定义新行行高
  96. row.Height = short.Parse((13.5 * ).ToString());
  97. for (int j = ; j < columnCount; j++)
  98. {
  99. if (j - >= )
  100. {
  101. //创建新的单元格
  102. cell = row.CreateCell(j - );
  103. //赋值
  104. cell.SetCellValue(dt.Rows[i][j].ToString());
  105. cell.CellStyle = cellStyle;
  106. }
  107. }
  108. }
  109. string Excelfile = context.Server.MapPath("路径");
  110. string path = context.Server.MapPath("excel再上一级的路径");
  111. DirectoryInfo folder = new DirectoryInfo(path);
  112. //文件夹是否存在当前Excel
  113. foreach (FileInfo file in folder.GetFiles("*.xlsx"))
  114. {
  115. if (file.FullName == Excelfile)
  116. {
  117. try
  118. {
  119. File.Delete(Excelfile);
  120. }
  121. catch (Exception ex)
  122. {
  123. Console.Write(ex.Message);
  124. }
  125. }
  126. }
  127. using (FileStream file = new FileStream(Excelfile, FileMode.Create))
  128. {
  129. workbook.Write(file);  //写入数据 创建文件。
  130. file.Close();
  131. }
  132. }
  133. }
  134. catch (Exception ex)
  135. {
  136. }
  137. }

NPOI操作、导出Excel的更多相关文章

  1. NPOI导入导出Excel

    .net mvc利用NPOI导入导出excel 注意:如何导出的提交方式ajax导出是失效的! 解决方案是:js处理l两个表单的提交  代码:  第一步. 在页面里面加入2个隐藏的iframe, 如下 ...

  2. .Net core NPOI导入导出Excel

    最近在想.net core NPOI 导入导出Excel,一开始感觉挺简单的,后来真的遇到很多坑.所以还是写一篇博客让其他人少走一些弯路,也方便忘记了再重温一遍.好了,多的不说,直接开始吧. 在.Ne ...

  3. NPOI导入导出EXCEL通用类,供参考,可直接使用在WinForm项目中

    以下是NPOI导入导出EXCEL通用类,是在别人的代码上进行优化的,兼容xls与xlsx文件格式,供参考,可直接使用在WinForm项目中,由于XSSFWorkbook类型的Write方法限制,Wri ...

  4. Npoi导入导出Excel操作

    之前公司的一个物流商系统需要实现对订单的批量导入和导出,翻阅了一些资料,最后考虑使用NPOI实现这个需求. 在winform上面实现excel操作:http://www.cnblogs.com/Cal ...

  5. Excel操作--使用NPOI导入导出Excel为DataTable

    1.ExcelHelper封装 namespace NPOI操作Excel { public class ExcelHelper { /// <summary> /// DataTable ...

  6. <转>Npoi导入导出Excel操作<载>

    //Datatable导出Excel private static void GridToExcelByNPOI(DataTable dt, string strExcelFileName) { tr ...

  7. .net mvc利用NPOI导入导出excel

    1.导出Excel :首先引用NPOI包(Action一定要用FileResult) /// <summary> /// 批量导出需要导出的列表 /// </summary> ...

  8. ASP.Net MVC利用NPOI导入导出Excel

    因近期项目遇到所以记录一下: 首先导出Excel: 首先引用NPOI包 http://pan.baidu.com/s/1i3Fosux (Action一定要用FileResult) /// <s ...

  9. net mvc 利用NPOI导入导出excel

    1.导出Excel : 首先引用NPOI包(Action一定要用FileResult) /// <summary> /// 批量导出需要导出的列表 /// </summary> ...

  10. NPOI操作之一EXCEL数据导入数据库

    一.概要 前面讲到NPOI操作EXCEL导出功能,下面讲下从EXCEL里获取数据添加进数据库. 二.代码 HSSFWorkbook hssfworkbook; public void ExcelDat ...

随机推荐

  1. 使用Python的requests库作接口测试——对HTTP动词的支持

    Requests提供了几乎所有HTTP动词的功能:GET,OPTIONS, HEAD,POST,PUT,PATCH和DELETE. 动词GET-查看提交信息 HTTP GET是一个幂等的方法,从给定的 ...

  2. agc014F Strange Sorting

    这套题比较简单,以为自己能够独立A掉D和E,或许就能自己A掉F,看来还真是想多了 题意:给一个$n$的全排列,每次操作把$max(a[1],a[2],...,a[i]) = a[i]$的记为$high ...

  3. js构造函数+原型

    注:普通对象与函数对象 var o1 = {}; var o2 =new Object(); var o3 = new f1(); function f1(){}; var f2 = function ...

  4. ACdream 1112

    题目链接 Alice and Bob Time Limit: 6000/3000MS (Java/Others)Memory Limit: 256000/128000KB (Java/Others) ...

  5. Spring Bean 作用域

    Bean 的作用域 当在 Spring 中定义一个 bean 时,你必须声明该 bean 的作用域的选项.例如,为了强制 Spring 在每次需要时都产生一个新的 bean 实例,你应该声明 bean ...

  6. java验证码识别

    首先参考了csdn大佬的文章,但是写的不全ImgUtils类没有给出代码,无法进行了 写不完整就是制造垃圾 不过这个大佬又说这个大佬的文章值得参考于是又查看这篇文章 有案例https://blog.c ...

  7. windows device recovery tool 刷机

    ch 春节期间,拿出来诺基亚1020拍照,误删软件,无法登陆微软账号,考虑刷机处理 下载windows device recovery tool,进行刷机,但是固件下载一直失败 考虑下载好固件包,ff ...

  8. ModelAndView返回mav时,报404

    报404的可能性太多了 简单来看,404后边有信息,说明请已经分配到了控制器 经过调试发现,mav已经分配到了页面 原因,modelandview的包导入错误,正确的包是 import org.spr ...

  9. 玩转Spring Boot 自定义配置、导入XML配置与外部化配置

    玩转Spring Boot 自定义配置.导入XML配置与外部化配置       在这里我会全面介绍在Spring Boot里面如何自定义配置,更改Spring Boot默认的配置,以及介绍各配置的优先 ...

  10. ZooKeeper的分布式锁实现

    分布式锁一般有三种实现方式: 1. 数据库乐观锁: 2. 基于Redis的分布式锁: 3. 基于ZooKeeper的分布式锁. 本篇博客将介绍第三种方式,基于Zookeeper实现分布式锁.虽然网上已 ...