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. 016-WebDriver API(2)

    1. 多表单切换 WebDriver只能在一个页面上对元素进行识别和定位,无法直接定位frame/iframe表单内嵌页面上的元素,这是就需要通过switch_to.frame()方法将当前定位的主体 ...

  2. Python-Jsonpath简单入门

    原文来自:http://goessner.net/articles/JsonPath/   JSONPath - 是xpath在json的应用. xml最大的优点就有大量的工具可以分析,转换,和选择性 ...

  3. python 为 class 添加新的属性和方法

    通过继承: >>> class Point(namedtuple('Point', ['x', 'y'])): ... __slots__ = () ... @property .. ...

  4. Maven中央仓库地址大全,Maven中央仓库配置示例

    < Maven 中央仓库地址大全 > 在上一篇文章中完成了 < Maven镜像地址大全 >,后来又花了时间又去收集并整理了关于 maven 远程仓库地址,并整理于此,关于 Ma ...

  5. docker启动redis设置密码

    docker run --name picker-redis -p 6379:6379 -d redis --requirepass "认证密码"

  6. sqoop import 和export的问题

    sqoop import DB 2 hive(hdfs)是采用JDBC的过程,与传统hive区别在与多走了thrift server接口(稳定性待学习现在还比较模糊没做过大数据量测试),而export ...

  7. 解决JSP调用JavaBean出现乱码问题

    解决JSP调用JavaBean出现乱码问题 话不多说放代码 144 Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style D ...

  8. golang包引用

    一.我的GOPATH环境变量值如下图: 二.在GOPATH路径下面的的src目录下面的目录名称就是引用里面包的起始位置,如下图: 三.举例说明:这里引用同一个项目的包,源文件“learn/main/m ...

  9. Opencv中RGB通道/HSV通道并分离

    OpenCV中HSV颜色模型及颜色分量范围 opencv HSV 颜色模型(H通道取值 && CV_BGR2HSV_FULL) [opencv]在hsv颜色空间识别区域颜色 将原图分离 ...

  10. Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---策略模式之MiniDuckSimulator[转]

     1  2{<HeadFirst设计模式>之策略模式 }  3{ 本单元中的类为策略类           }  4{ 编译工具: Delphi7.0           }  5{ E- ...