diff --git a/bonus-api/bonus-api-system/pom.xml b/bonus-api/bonus-api-system/pom.xml index 5596218..21a98e3 100644 --- a/bonus-api/bonus-api-system/pom.xml +++ b/bonus-api/bonus-api-system/pom.xml @@ -5,7 +5,7 @@ com.bonus bonus-api - 24.7.1 + 24.8.0 4.0.0 diff --git a/bonus-api/pom.xml b/bonus-api/pom.xml index 547db28..e3dc255 100644 --- a/bonus-api/pom.xml +++ b/bonus-api/pom.xml @@ -4,7 +4,7 @@ com.bonus bonus - 24.7.1 + 24.8.0 4.0.0 diff --git a/bonus-auth/pom.xml b/bonus-auth/pom.xml index 5897600..11612ef 100644 --- a/bonus-auth/pom.xml +++ b/bonus-auth/pom.xml @@ -4,7 +4,7 @@ com.bonus bonus - 24.7.1 + 24.8.0 4.0.0 diff --git a/bonus-common/bonus-common-core/pom.xml b/bonus-common/bonus-common-core/pom.xml index 77b6ed3..9b44183 100644 --- a/bonus-common/bonus-common-core/pom.xml +++ b/bonus-common/bonus-common-core/pom.xml @@ -5,7 +5,7 @@ com.bonus bonus-common - 24.7.1 + 24.8.0 4.0.0 diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/annotation/Excel.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/annotation/Excel.java index e86a47d..bfd08f8 100644 --- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/annotation/Excel.java +++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/annotation/Excel.java @@ -18,6 +18,12 @@ import com.bonus.common.core.utils.poi.ExcelHandlerAdapter; @Target(ElementType.FIELD) public @interface Excel { + /** + * 是否是序号 + * @return + */ + public boolean isSequence() default false; + /** * 导出时在excel中排序 */ diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/poi/ExcelUtil.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/poi/ExcelUtil.java index 67e690e..c8d6610 100644 --- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/poi/ExcelUtil.java +++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/poi/ExcelUtil.java @@ -1,7 +1,9 @@ package com.bonus.common.core.utils.poi; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; +import java.io.OutputStream; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; @@ -20,6 +22,8 @@ import java.util.Map; import java.util.Set; import java.util.stream.Collectors; import javax.servlet.http.HttpServletResponse; + +import com.bonus.common.core.web.domain.AjaxResult; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.RegExUtils; import org.apache.commons.lang3.reflect.FieldUtils; @@ -580,6 +584,7 @@ public class ExcelUtil int startNo = index * SHEETSIZE; int endNo = Math.min(startNo + SHEETSIZE, list.size()); int rowNo = (1 + rownum) - startNo; + int sequence=1; for (int i = startNo; i < endNo; i++) { rowNo = isSubList() ? (i > 1 ? rowNo + 1 : rowNo + i) : i + 1 + rownum - startNo; @@ -623,7 +628,7 @@ public class ExcelUtil { subField.setAccessible(true); Excel attr = subField.getAnnotation(Excel.class); - this.addCell(attr, row, (T) obj, subField, column + subIndex); + this.addCell(attr, row, (T) obj, subField, column + subIndex,sequence); } subIndex++; } @@ -633,9 +638,10 @@ public class ExcelUtil } else { - this.addCell(excel, row, vo, field, column++); + this.addCell(excel, row, vo, field, column++,sequence); } } + sequence++; } } @@ -932,7 +938,7 @@ public class ExcelUtil /** * 添加单元格 */ - public Cell addCell(Excel attr, Row row, T vo, Field field, int column) + public Cell addCell(Excel attr, Row row, T vo, Field field, int column, int sequence) { Cell cell = null; try @@ -956,7 +962,11 @@ public class ExcelUtil String dateFormat = attr.dateFormat(); String readConverterExp = attr.readConverterExp(); String separator = attr.separator(); - if (StringUtils.isNotEmpty(dateFormat) && StringUtils.isNotNull(value)) + if(attr.isSequence()){ + cell.setCellValue(sequence); + } + + else if (StringUtils.isNotEmpty(dateFormat) && StringUtils.isNotNull(value)) { cell.setCellValue(parseDateToStr(dateFormat, value)); } @@ -1551,4 +1561,74 @@ public class ExcelUtil } return method; } + + /** + * 对list数据源将其里面的数据导入到excel表单 + * + * @param filePath 返回本地excel文件路径 + * @param list 导出数据集合 + * @param sheetName 工作表的名称 + * @param title 标题 + */ + public AjaxResult exportExcelToLocalFile(String filePath, List list, String sheetName, String title) + { + this.init(list, sheetName, title, Type.EXPORT); + if (StringUtils.isNotBlank(filePath)) + return exportExcelToLocalFile(filePath); + else + return exportExcelToLocalFile(sheetName); + } + + + /** + * 对list数据源将其里面的数据导出到excel表单 + doNothing().when(excelUtil).init(null, sheetName, title, Type.EXPORT); + doNothing().when(excelUtil).exportExcelToLocalFile(filePath); + + // Act + excelUtil.exportExcelToLocalFile(filePath, null, sheetName, title); + + // Assert + File file = new File(filePath); + assertTrue(file.exists()); + + // Clean up + file.delete(); + } + + @Excel + public static class User { + private Long id; + private String name; + private String sex; + private Integer age; + private Date birthday; + + // Getters and Setters + } + } + */ + private AjaxResult exportExcelToLocalFile(String filePath) + { + OutputStream out = null; + try + { + writeSheet(); + // 将文档写入文件 + out = new FileOutputStream(filePath); + wb.write(out); + System.out.println("excel document export successfully."); + return AjaxResult.success(filePath); + } + catch (Exception e) + { + log.error("导出Excel异常{}", e.getMessage()); + } + finally + { + IOUtils.closeQuietly(wb); + IOUtils.closeQuietly(out); + } + return AjaxResult.error("导出Excel失败,请联系网站管理员!"); + } } diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/poi/WordUtil.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/poi/WordUtil.java new file mode 100644 index 0000000..98554bc --- /dev/null +++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/poi/WordUtil.java @@ -0,0 +1,74 @@ +import org.apache.poi.util.Units; +import org.apache.poi.xwpf.usermodel.*; + +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; + +public class WordUtil { + + private XWPFDocument document; + + public WordUtil() { + this.document = new XWPFDocument(); + } + + // 创建段落 + public void addParagraph(String text, int fontSize) { + XWPFParagraph paragraph = document.createParagraph(); + XWPFRun run = paragraph.createRun(); + run.setText(text); + run.setFontSize(fontSize); + } + + // 插入图片 + public void insertImage(String imgFilePath, int width, int height) { + try (InputStream is = new FileInputStream(imgFilePath)) { + XWPFParagraph paragraph = document.createParagraph(); + XWPFRun run = paragraph.createRun(); + run.addPicture(is, XWPFDocument.PICTURE_TYPE_PNG, imgFilePath, Units.toEMU(width), Units.toEMU(height)); + } catch (Exception e) { + e.printStackTrace(); + } + } + + // 创建表格 + public void createTable(int rows, int cols) { + XWPFTable table = document.createTable(rows, cols); + for (int row = 0; row < rows; row++) { + XWPFTableRow tableRow = table.getRow(row); + for (int cell = 0; cell < cols; cell++) { + XWPFTableCell tableCell = tableRow.getCell(cell); + tableCell.setText("Row " + row + ", Cell " + cell); + } + } + } + + // 保存文档 + public void saveDocument(String filePath) { + try (FileOutputStream out = new FileOutputStream(filePath)) { + document.write(out); + } catch (IOException e) { + e.printStackTrace(); + } + } + + // 关闭文档 + public void closeDocument() { + try { + document.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static void main(String[] args) { + WordUtil wordUtil = new WordUtil(); + wordUtil.addParagraph("这是一个段落。", 16); + wordUtil.insertImage("path/to/image.png", 200, 200); + wordUtil.createTable(3, 3); + wordUtil.saveDocument("example.docx"); + wordUtil.closeDocument(); + } +} diff --git a/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/constant/ValidateUtilsTests.java b/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/constant/ValidateUtilsTests.java index 6c8c826..cfc707d 100644 --- a/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/constant/ValidateUtilsTests.java +++ b/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/constant/ValidateUtilsTests.java @@ -1,12 +1,5 @@ package com.bonus.common.core.constant; -//import com.alibaba.nacos.common.JustForTest; -//import com.bonus.common.core.utils.ServletUtils; -//import com.bonus.common.core.utils.StringUtils; -// -//import javax.servlet.http.HttpServletRequest; -//import java.net.InetAddress; -//import java.net.UnknownHostException; import com.bonus.common.core.utils.StringUtils; import com.bonus.common.core.utils.ip.IpUtils; diff --git a/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/ip/IpUtilsTests.java b/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/ip/IpUtilsTests.java index 0cfc6f6..ec91c03 100644 --- a/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/ip/IpUtilsTests.java +++ b/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/ip/IpUtilsTests.java @@ -1,12 +1,6 @@ package com.bonus.common.core.utils.ip; -//import com.alibaba.nacos.common.JustForTest; -//import com.bonus.common.core.utils.ServletUtils; -//import com.bonus.common.core.utils.StringUtils; -// -//import javax.servlet.http.HttpServletRequest; -//import java.net.InetAddress; -//import java.net.UnknownHostException; +import com.bonus.common.core.utils.ip.IpUtils; import org.junit.Assert; import org.junit.Test; import static org.junit.Assert.*; diff --git a/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/ExcelUtilTests.java b/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/ExcelUtilTests.java new file mode 100644 index 0000000..55c03c0 --- /dev/null +++ b/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/ExcelUtilTests.java @@ -0,0 +1,47 @@ +package com.bonus.common.core.utils.poi; +import com.bonus.common.core.utils.poi.ExcelUtil; +import org.junit.Test; +import com.bonus.common.core.annotation.Excel; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import static org.junit.Assert.assertTrue; +public class ExcelUtilTests { + @Test + public void testImportExcel() { + String currentPath = System.getProperty("user.dir"); + System.out.println("当前执行路径: " + currentPath); + ExcelUtil excelUtil = new ExcelUtil(Person.class); + currentPath +="/src/test/java/com/bonus/common/core/utils/poi/test.xlsx"; + try (FileInputStream fileInputStream = new FileInputStream(currentPath)) { + List persionList = excelUtil.importExcel(fileInputStream); + assertTrue(persionList.size() == 4); + + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + @Test + public void testExportExcel() { + String currentPath = System.getProperty("user.dir"); + System.out.println("当前执行路径: " + currentPath); + ExcelUtil excelUtil = new ExcelUtil(Person.class); + Person p1 = new Person("admin",10); + Person p2 = new Person("admin2",20); + + List personList = new ArrayList<>(); + personList.add(p1); + personList.add(p2); + currentPath +="/src/test/java/com/bonus/common/core/utils/poi/testExport.xlsx"; + excelUtil.exportExcelToLocalFile(currentPath,personList, "sheet1", null); + + + } + +} diff --git a/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/Person.java b/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/Person.java new file mode 100644 index 0000000..0cb7d13 --- /dev/null +++ b/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/Person.java @@ -0,0 +1,35 @@ +package com.bonus.common.core.utils.poi; + +import com.bonus.common.core.annotation.Excel; + +public class Person { + @Excel(name = "序号", isSequence = true, cellType = Excel.ColumnType.NUMERIC, type = Excel.Type.EXPORT) + int sequence; + @Excel(name = "姓名", cellType = Excel.ColumnType.STRING) + String name; + @Excel(name = "年龄", isStatistics = true, cellType = Excel.ColumnType.NUMERIC) + int age; + + // 公共无参构造函数 + public Person() { + } + + // 带参数的构造函数 + public Person(String name, int age) { + this.name = name; + this.age = age; + } + + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + + public int getAge() {return age;} + + public void setAge(int age) { + this.age = age; + } +} diff --git a/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/test.xlsx b/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/test.xlsx new file mode 100644 index 0000000..485976a Binary files /dev/null and b/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/test.xlsx differ diff --git a/bonus-common/bonus-common-datascope/pom.xml b/bonus-common/bonus-common-datascope/pom.xml index 8019b82..25b14bb 100644 --- a/bonus-common/bonus-common-datascope/pom.xml +++ b/bonus-common/bonus-common-datascope/pom.xml @@ -5,7 +5,7 @@ com.bonus bonus-common - 24.7.1 + 24.8.0 4.0.0 diff --git a/bonus-common/bonus-common-datasource/pom.xml b/bonus-common/bonus-common-datasource/pom.xml index 008cd3a..9e409c3 100644 --- a/bonus-common/bonus-common-datasource/pom.xml +++ b/bonus-common/bonus-common-datasource/pom.xml @@ -5,7 +5,7 @@ com.bonus bonus-common - 24.7.1 + 24.8.0 4.0.0 diff --git a/bonus-common/bonus-common-log/pom.xml b/bonus-common/bonus-common-log/pom.xml index 47be440..afb5892 100644 --- a/bonus-common/bonus-common-log/pom.xml +++ b/bonus-common/bonus-common-log/pom.xml @@ -5,7 +5,7 @@ com.bonus bonus-common - 24.7.1 + 24.8.0 4.0.0 diff --git a/bonus-common/bonus-common-redis/pom.xml b/bonus-common/bonus-common-redis/pom.xml index 59ca246..eca03f0 100644 --- a/bonus-common/bonus-common-redis/pom.xml +++ b/bonus-common/bonus-common-redis/pom.xml @@ -5,7 +5,7 @@ com.bonus bonus-common - 24.7.1 + 24.8.0 4.0.0 diff --git a/bonus-common/bonus-common-seata/pom.xml b/bonus-common/bonus-common-seata/pom.xml index 24265c7..a0bab6d 100644 --- a/bonus-common/bonus-common-seata/pom.xml +++ b/bonus-common/bonus-common-seata/pom.xml @@ -5,7 +5,7 @@ com.bonus bonus-common - 24.7.1 + 24.8.0 4.0.0 diff --git a/bonus-common/bonus-common-security/pom.xml b/bonus-common/bonus-common-security/pom.xml index 0ba8d1e..b427ab1 100644 --- a/bonus-common/bonus-common-security/pom.xml +++ b/bonus-common/bonus-common-security/pom.xml @@ -4,7 +4,7 @@ com.bonus bonus-common - 24.7.1 + 24.8.0 4.0.0 diff --git a/bonus-common/bonus-common-sensitive/pom.xml b/bonus-common/bonus-common-sensitive/pom.xml index d2bcbca..6c51537 100644 --- a/bonus-common/bonus-common-sensitive/pom.xml +++ b/bonus-common/bonus-common-sensitive/pom.xml @@ -5,7 +5,7 @@ com.bonus bonus-common - 24.7.1 + 24.8.0 4.0.0 diff --git a/bonus-common/bonus-common-swagger/pom.xml b/bonus-common/bonus-common-swagger/pom.xml index 28e284a..f9a3f65 100644 --- a/bonus-common/bonus-common-swagger/pom.xml +++ b/bonus-common/bonus-common-swagger/pom.xml @@ -5,7 +5,7 @@ com.bonus bonus-common - 24.7.1 + 24.8.0 4.0.0 diff --git a/bonus-common/pom.xml b/bonus-common/pom.xml index 7ad1829..44e0412 100644 --- a/bonus-common/pom.xml +++ b/bonus-common/pom.xml @@ -4,7 +4,7 @@ com.bonus bonus - 24.7.1 + 24.8.0 4.0.0 diff --git a/bonus-gateway/pom.xml b/bonus-gateway/pom.xml index e3c561b..59ae83f 100644 --- a/bonus-gateway/pom.xml +++ b/bonus-gateway/pom.xml @@ -4,7 +4,7 @@ com.bonus bonus - 24.7.1 + 24.8.0 4.0.0 diff --git a/bonus-modules/bonus-file/pom.xml b/bonus-modules/bonus-file/pom.xml index dca2365..543a7c9 100644 --- a/bonus-modules/bonus-file/pom.xml +++ b/bonus-modules/bonus-file/pom.xml @@ -5,7 +5,7 @@ com.bonus bonus-modules - 24.7.1 + 24.8.0 4.0.0 diff --git a/bonus-modules/bonus-gen/pom.xml b/bonus-modules/bonus-gen/pom.xml index 42d112d..077fdae 100644 --- a/bonus-modules/bonus-gen/pom.xml +++ b/bonus-modules/bonus-gen/pom.xml @@ -5,7 +5,7 @@ com.bonus bonus-modules - 24.7.1 + 24.8.0 4.0.0 diff --git a/bonus-modules/bonus-job/pom.xml b/bonus-modules/bonus-job/pom.xml index 1d537b3..9dd99de 100644 --- a/bonus-modules/bonus-job/pom.xml +++ b/bonus-modules/bonus-job/pom.xml @@ -5,7 +5,7 @@ com.bonus bonus-modules - 24.7.1 + 24.8.0 4.0.0 diff --git a/bonus-modules/bonus-mongodb/pom.xml b/bonus-modules/bonus-mongodb/pom.xml index b54c93b..68edd0a 100644 --- a/bonus-modules/bonus-mongodb/pom.xml +++ b/bonus-modules/bonus-mongodb/pom.xml @@ -6,7 +6,7 @@ com.bonus bonus-modules - 24.7.1 + 24.8.0 bonus-modules-mongodb diff --git a/bonus-modules/bonus-obs/pom.xml b/bonus-modules/bonus-obs/pom.xml index ba929d1..c210c18 100644 --- a/bonus-modules/bonus-obs/pom.xml +++ b/bonus-modules/bonus-obs/pom.xml @@ -6,7 +6,7 @@ com.bonus bonus-modules - 24.7.1 + 24.8.0 bonus-modules-obs diff --git a/bonus-modules/bonus-oss/pom.xml b/bonus-modules/bonus-oss/pom.xml index 5a8c71f..83b92bc 100644 --- a/bonus-modules/bonus-oss/pom.xml +++ b/bonus-modules/bonus-oss/pom.xml @@ -6,7 +6,7 @@ com.bonus bonus-modules - 24.7.1 + 24.8.0 bonus-oss diff --git a/bonus-modules/bonus-system/pom.xml b/bonus-modules/bonus-system/pom.xml index aeed399..4737638 100644 --- a/bonus-modules/bonus-system/pom.xml +++ b/bonus-modules/bonus-system/pom.xml @@ -5,7 +5,7 @@ com.bonus bonus-modules - 24.7.1 + 24.8.0 4.0.0 diff --git a/bonus-modules/pom.xml b/bonus-modules/pom.xml index 00d4b05..cc4d897 100644 --- a/bonus-modules/pom.xml +++ b/bonus-modules/pom.xml @@ -4,7 +4,7 @@ com.bonus bonus - 24.7.1 + 24.8.0 4.0.0 diff --git a/bonus-visual/bonus-monitor/pom.xml b/bonus-visual/bonus-monitor/pom.xml index 9f42cbd..6496ff4 100644 --- a/bonus-visual/bonus-monitor/pom.xml +++ b/bonus-visual/bonus-monitor/pom.xml @@ -4,7 +4,7 @@ com.bonus bonus-visual - 24.7.1 + 24.8.0 4.0.0 diff --git a/bonus-visual/pom.xml b/bonus-visual/pom.xml index 9adc06b..9079bbe 100644 --- a/bonus-visual/pom.xml +++ b/bonus-visual/pom.xml @@ -4,7 +4,7 @@ com.bonus bonus - 24.7.1 + 24.8.0 4.0.0 diff --git a/pom.xml b/pom.xml index 99c8b19..42982dc 100644 --- a/pom.xml +++ b/pom.xml @@ -6,14 +6,14 @@ com.bonus bonus - 24.7.1 + 24.8.0 bonus http://www.ahbonus.cn 博诺思微服务系统 - 24.7.1 + 24.8.0 UTF-8 UTF-8 1.8