ExportExcel.java 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. package restcontroller.webmanage.sale.u8prodprice;
  2. import org.apache.poi.ss.usermodel.*;
  3. import org.apache.poi.ss.util.CellRangeAddress;
  4. import org.apache.poi.xssf.usermodel.*;
  5. import java.awt.*;
  6. import java.awt.Color;
  7. public class ExportExcel {
  8. /**
  9. * 设置标题单元样式
  10. *
  11. * @param workbook
  12. * @return
  13. */
  14. public static XSSFCellStyle createTitleCellStyle1(XSSFWorkbook workbook) {
  15. XSSFCellStyle cellStyle = workbook.createCellStyle();
  16. XSSFFont font = workbook.createFont();
  17. font.setFontHeightInPoints((short) 12);
  18. font.setColor(IndexedColors.RED.getIndex());
  19. font.setFontName("微软雅黑");// 设置标题字体
  20. cellStyle.setFont(font);
  21. cellStyle.setWrapText(true); //自动换行
  22. cellStyle = workbook.createCellStyle();
  23. cellStyle.setFont(font);// 设置列标题样式
  24. XSSFColor colorBlue = new XSSFColor(new Color(48, 84, 150));
  25. cellStyle.setFillForegroundColor(colorBlue);
  26. cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
  27. cellStyle.setAlignment(HorizontalAlignment.CENTER); // 居中
  28. return cellStyle;
  29. }
  30. /**
  31. * 设置中文提示信息样式
  32. *
  33. * @param workbook
  34. * @return
  35. */
  36. public static XSSFCellStyle createTitleCellStyle2(XSSFWorkbook workbook) {
  37. XSSFCellStyle cellStyle = workbook.createCellStyle();
  38. XSSFFont font = workbook.createFont();
  39. font.setFontHeightInPoints((short) 12);
  40. font.setColor(IndexedColors.RED.getIndex());
  41. font.setFontName("微软雅黑");// 设置标题字体
  42. cellStyle.setFont(font);
  43. cellStyle.setWrapText(true); //自动换行
  44. cellStyle = workbook.createCellStyle();
  45. cellStyle.setFont(font);// 设置列标题样式
  46. XSSFColor colorGrey = new XSSFColor(new Color(217, 225, 242));
  47. cellStyle.setFillForegroundColor(colorGrey);
  48. cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
  49. cellStyle.setAlignment(HorizontalAlignment.LEFT); // 居左
  50. return cellStyle;
  51. }
  52. /**
  53. * 设置正文单元样式
  54. *
  55. * @param workbook
  56. * @return
  57. */
  58. public static XSSFCellStyle createBodyCellStyle4(XSSFWorkbook workbook) {
  59. XSSFCellStyle cellStyle = workbook.createCellStyle();
  60. XSSFFont font = workbook.createFont();
  61. font.setFontHeightInPoints((short) 12);
  62. font.setFontName("微软雅黑");// 设置标题字体
  63. // font.setFontName(HSSFFont.FONT_ARIAL);// 设置标题字体
  64. cellStyle.setFont(font);
  65. cellStyle = workbook.createCellStyle();
  66. cellStyle.setAlignment(HorizontalAlignment.CENTER);
  67. return cellStyle;
  68. }
  69. public static XSSFCellStyle createTitleCellStyle3(XSSFWorkbook workbook) {
  70. XSSFCellStyle cellStyle = workbook.createCellStyle();
  71. XSSFFont font = workbook.createFont();
  72. font.setFontHeightInPoints((short) 12);
  73. font.setColor(IndexedColors.WHITE.getIndex());
  74. font.setFontName("微软雅黑");// 设置标题字体
  75. cellStyle.setFont(font);
  76. cellStyle.setWrapText(true); //自动换行
  77. cellStyle = workbook.createCellStyle();
  78. cellStyle.setFont(font);// 设置列标题样式
  79. XSSFColor colorBlue = new XSSFColor(new Color(48, 84, 150));
  80. cellStyle.setFillForegroundColor(colorBlue);
  81. cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
  82. cellStyle.setAlignment(HorizontalAlignment.CENTER); // 居中
  83. return cellStyle;
  84. }
  85. /**
  86. * 2022-07-14 17:41:39
  87. * 设置表格宽度(导入模板)
  88. **/
  89. public static void setBatchDetailSheetColumn1(XSSFSheet sheet) {
  90. sheet.setDefaultRowHeight((short) 600);
  91. sheet.setColumnWidth((short) 0, (short) 5000);
  92. sheet.setColumnWidth((short) 1, (short) 5000);
  93. sheet.setColumnWidth((short) 2, (short) 5000);
  94. }
  95. /**
  96. * 2022-07-14 17:41:39
  97. * 设置表格宽度(返回错误Excel的样式)
  98. **/
  99. public static void setBatchDetailSheetColumn2(XSSFSheet sheet) {
  100. sheet.setDefaultRowHeight((short) 600);
  101. sheet.setColumnWidth((short) 0, (short) 5000);
  102. sheet.setColumnWidth((short) 1, (short) 5000);
  103. sheet.setColumnWidth((short) 2, (short) 5000);
  104. sheet.setColumnWidth((short) 3, (short) 5000);
  105. }
  106. /**
  107. * 2022-07-14 17:42:03
  108. * 设置表头
  109. * cellStyle1 中文提示信息样式
  110. * cellStyle2 标题提示信息样式
  111. * cellStyle3 正文提示信息样式
  112. **/
  113. public static void batchDetail(XSSFSheet sheet, XSSFCellStyle cellStyle1, XSSFCellStyle cellStyle2, XSSFCellStyle cellStyle3, XSSFCellStyle cellStyle4, XSSFWorkbook xssfFWorkbook) {
  114. // HSSFCellStyle bcs = ExportExcel.createTitleCellStyle1(workbook);
  115. // bcs.setBorderBottom(BorderStyle.THIN); //下边框
  116. // bcs.setBorderLeft(BorderStyle.THIN);//左边框
  117. // bcs.setBorderTop(BorderStyle.THIN);//上边框
  118. // bcs.setBorderRight(BorderStyle.THIN);//右边框
  119. // bcs.setWrapText(true);
  120. XSSFRow row = null;
  121. XSSFCell cell = null;
  122. cellStyle1.setBorderBottom(BorderStyle.THIN); //下边框
  123. cellStyle1.setBorderLeft(BorderStyle.THIN);//左边框
  124. cellStyle1.setBorderTop(BorderStyle.THIN);//上边框
  125. cellStyle1.setBorderRight(BorderStyle.THIN);//右边框
  126. cellStyle1.setWrapText(true);
  127. cellStyle2.setBorderBottom(BorderStyle.THIN); //下边框
  128. cellStyle2.setBorderLeft(BorderStyle.THIN);//左边框
  129. cellStyle2.setBorderTop(BorderStyle.THIN);//上边框
  130. cellStyle2.setBorderRight(BorderStyle.THIN);//右边框
  131. cellStyle2.setWrapText(true);
  132. DataFormat format = xssfFWorkbook.createDataFormat();
  133. cellStyle1.setDataFormat(format.getFormat("@"));
  134. cellStyle2.setDataFormat(format.getFormat("@"));
  135. cellStyle3.setDataFormat(format.getFormat("@"));
  136. cellStyle4.setDataFormat(format.getFormat("@"));
  137. cellStyle1.setDataFormat(xssfFWorkbook.createDataFormat().getFormat("TEXT"));
  138. cellStyle2.setDataFormat(xssfFWorkbook.createDataFormat().getFormat("TEXT"));
  139. cellStyle3.setDataFormat(xssfFWorkbook.createDataFormat().getFormat("TEXT"));
  140. cellStyle4.setDataFormat(xssfFWorkbook.createDataFormat().getFormat("TEXT"));
  141. /*第一行*/
  142. sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 2));
  143. /*第一行塞值*/
  144. row = sheet.createRow(0);
  145. cell = row.createCell(0);// ID
  146. cell.setCellStyle(cellStyle1);
  147. cell.setCellValue("u8产品入库成本明细导入");
  148. /*第二行*/
  149. sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 2));
  150. /*第二行塞值*/
  151. row = sheet.createRow(1);
  152. cell = row.createCell(0);// ID
  153. cell.setCellStyle(cellStyle2);
  154. cell.setCellValue("注意:①请按照以下示例填写信息;②最多不超过5000行;③导入前,请记得删除示例行!");
  155. /*第三行塞值*/
  156. row = sheet.createRow(2);
  157. cell = row.createCell(0);
  158. cell.setCellStyle(cellStyle3);
  159. cell.setCellValue("erp仓库编号");
  160. cell = row.createCell(1);
  161. cell.setCellStyle(cellStyle3);
  162. cell.setCellValue("品号(必填)");
  163. cell = row.createCell(2);
  164. cell.setCellStyle(cellStyle3);
  165. cell.setCellValue("成本单价");
  166. /*第四行塞值*/
  167. row = sheet.createRow(3);
  168. cell = row.createCell(0);
  169. cell.setCellStyle(cellStyle4);
  170. cell.setCellValue("测试erp仓库编号");
  171. cell = row.createCell(1);
  172. cell.setCellStyle(cellStyle4);
  173. cell.setCellValue("测试品号");
  174. cell = row.createCell(2);
  175. cell.setCellStyle(cellStyle4);
  176. cell.setCellValue("测试成本单价");
  177. }
  178. /**
  179. * 2022-07-14 17:42:03
  180. * 设置表头
  181. **/
  182. public static void batchDetailErr(XSSFSheet sheet, XSSFCellStyle cellStyle1, XSSFCellStyle cellStyle2, XSSFCellStyle cellStyle3, XSSFWorkbook workbook) {
  183. // HSSFCellStyle bcs = ExportExcel.createTitleCellStyle1(workbook);
  184. // bcs.setBorderBottom(BorderStyle.THIN); //下边框
  185. // bcs.setBorderLeft(BorderStyle.THIN);//左边框
  186. // bcs.setBorderTop(BorderStyle.THIN);//上边框
  187. // bcs.setBorderRight(BorderStyle.THIN);//右边框
  188. // bcs.setWrapText(true);
  189. XSSFRow row = null;
  190. XSSFCell cell = null;
  191. cellStyle1.setBorderBottom(BorderStyle.THIN); //下边框
  192. cellStyle1.setBorderLeft(BorderStyle.THIN);//左边框
  193. cellStyle1.setBorderTop(BorderStyle.THIN);//上边框
  194. cellStyle1.setBorderRight(BorderStyle.THIN);//右边框
  195. cellStyle1.setWrapText(true);
  196. /*第一行*/
  197. sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 3));
  198. /*第一行塞值*/
  199. row = sheet.createRow(0);
  200. cell = row.createCell(0);// ID
  201. cell.setCellStyle(cellStyle1);
  202. cell.setCellValue("u8产品入库成本明细导入");
  203. /*第二行*/
  204. sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 3));
  205. /*第二行塞值*/
  206. row = sheet.createRow(1);
  207. cell = row.createCell(0);// ID
  208. cell.setCellStyle(cellStyle2);
  209. cell.setCellValue("注意:①请按照以下示例填写信息;②最多不超过5000行;③导入前,请记得删除示例行!");
  210. /*第三行塞值*/
  211. row = sheet.createRow(2);
  212. cell = row.createCell(0);
  213. cell.setCellStyle(cellStyle3);
  214. cell.setCellValue("erp仓库编号");
  215. cell = row.createCell(1);
  216. cell.setCellStyle(cellStyle3);
  217. cell.setCellValue("品号(必填)");
  218. cell = row.createCell(2);
  219. cell.setCellStyle(cellStyle3);
  220. cell.setCellValue("成本单价");
  221. cell = row.createCell(3);
  222. cell.setCellStyle(cellStyle3);
  223. cell.setCellValue("错误信息");
  224. }
  225. }