欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

easypoi合并单元格导入(EasyPoi导入导出最全案例)

程序员文章站 2023-11-17 08:05:52
下面例子为创建产生一个excel,合并单元格,然后为合并后的单元格添加边框package test;import java.io.fileoutputstream;import java.io.ioe...

下面例子为创建产生一个excel,合并单元格,然后为合并后的单元格添加边框

  1. package test;
  2. import java.io.fileoutputstream;
  3. import java.io.ioexception;
  4. import org.apache.poi.hssf.usermodel.hssfcell;
  5. import org.apache.poi.hssf.usermodel.hssfcellstyle;
  6. import org.apache.poi.hssf.usermodel.hssfrow;
  7. import org.apache.poi.hssf.usermodel.hssfsheet;
  8. import org.apache.poi.hssf.usermodel.hssfworkbook;
  9. import org.apache.poi.ss.usermodel.borderstyle;
  10. import org.apache.poi.ss.usermodel.font;
  11. import org.apache.poi.ss.usermodel.horizontalalignment;
  12. import org.apache.poi.ss.util.cellrangeaddress;
  13. import org.apache.poi.ss.util.regionutil;
  14. public class excelpoitest {
  15. public static void main(string[] args) {
  16. hssfworkbook workbook = new hssfworkbook(); // 创建一个excel
  17. // excel生成过程: excel–>sheet–>row–>cell
  18. hssfsheet sheet = workbook.createsheet(“test”); // 为excel创建一个名为test的sheet页
  19. hssfrow row = sheet.createrow(1); // 创建一行,参数2表示第一行
  20. hssfcell cellb2 = row.createcell(1); // 在b2位置创建一个单元格
  21. hssfcell cellb3 = row.createcell(2); // 在b3位置创建一个单元格
  22. cellb2.setcellvalue(“单元格b2”); // b2单元格填充内容
  23. cellb3.setcellvalue(“单元格b3”); // b3单元格填充内容
  24. hssfcellstyle cellstyle = workbook.createcellstyle(); // 单元格样式
  25. font fontstyle = workbook.createfont(); // 字体样式
  26. fontstyle.setbold(true); // 加粗
  27. fontstyle.setfontname(“黑体”); // 字体
  28. fontstyle.setfontheightinpoints((short) 11); // 大小
  29. // 将字体样式添加到单元格样式中
  30. cellstyle.setfont(fontstyle);
  31. // 边框,居中
  32. cellstyle.setalignment(horizontalalignment.center);
  33. cellstyle.setborderbottom(borderstyle.thin);
  34. cellstyle.setborderleft(borderstyle.thin);
  35. cellstyle.setborderright(borderstyle.thin);
  36. cellstyle.setbordertop(borderstyle.thin);
  37. cellb2.setcellstyle(cellstyle); // 为b2单元格添加样式
  38. // 合并单元格
  39. cellrangeaddress cra =new cellrangeaddress(1, 3, 1, 3); // 起始行, 终止行, 起始列, 终止列
  40. sheet.addmergedregion(cra);
  41. // 使用regionutil类为合并后的单元格添加边框
  42. regionutil.setborderbottom(1, cra, sheet); // 下边框
  43. regionutil.setborderleft(1, cra, sheet); // 左边框
  44. regionutil.setborderright(1, cra, sheet); // 有边框
  45. regionutil.setbordertop(1, cra, sheet); // 上边框
  46. // 输出到本地
  47. string excelname = “/myexcel.xls”;
  48. fileoutputstream out = null;
  49. try {
  50. out = new fileoutputstream(excelname);
  51. workbook.write(out);
  52. out.flush();
  53. out.close();
  54. } catch (exception e) {
  55. e.printstacktrace();
  56. } finally {
  57. if (out != null)
  58. try {
  59. out.close();
  60. } catch (ioexception e) {
  61. e.printstacktrace();
  62. }
  63. out = null;
  64. }
  65. }
  66. }

生成的excel样式为

easypoi合并单元格导入(EasyPoi导入导出最全案例)

简单说明:

1.excel生成过程: excel–>sheet–>row–>cell 2.索引从0开始

3.合并单元格后保留最左上角的单元格(b3单元格被b2单元格覆盖)

4.合并后单元格边框通过regionutil设置,如果删除以下代码

  1. // 使用regionutil类为合并后的单元格添加边框
  2. regionutil.setborderbottom(1, cra, sheet); // 下边框
  3. regionutil.setborderleft(1, cra, sheet); // 左边框
  4. regionutil.setborderright(1, cra, sheet); // 有边框
  5. regionutil.setbordertop(1, cra, sheet); // 上边框

效果为:

easypoi合并单元格导入(EasyPoi导入导出最全案例)

可以看到只有b2单元格有边框。