From 2b094afd1069b511e599684f2136f20d30bb35a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Mon, 28 Oct 2024 15:37:00 +0800 Subject: [PATCH 1/2] 'commit' --- pom.xml | 25 ++-- .../com/dsideal/base/Tools/GenerateExcel.java | 121 ++++++++++++++++++ 2 files changed, 136 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/dsideal/base/Tools/GenerateExcel.java diff --git a/pom.xml b/pom.xml index 53f54703..13923783 100644 --- a/pom.xml +++ b/pom.xml @@ -107,9 +107,21 @@ 2.3.3 - javax.xml.bind - jaxb-api - 2.3.1 + org.xerial + sqlite-jdbc + 3.43.2.0 + + + + org.slf4j + slf4j-api + 2.0.16 + + + + org.apache.poi + poi-ooxml + 5.2.3 @@ -204,13 +216,6 @@ log4j-api 2.20.0 - - - - org.slf4j - slf4j-simple - 1.7.36 - com.fasterxml.jackson.core diff --git a/src/main/java/com/dsideal/base/Tools/GenerateExcel.java b/src/main/java/com/dsideal/base/Tools/GenerateExcel.java new file mode 100644 index 00000000..54a50e17 --- /dev/null +++ b/src/main/java/com/dsideal/base/Tools/GenerateExcel.java @@ -0,0 +1,121 @@ +package com.dsideal.base.Tools; + +import cn.hutool.core.io.FileUtil; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.sql.*; +import java.util.ArrayList; +import java.util.List; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +public class GenerateExcel { + + public static void exportResultSetToExcel(ResultSet resultSet, String excelFilePath) throws SQLException, IOException { + // 创建一个新的Excel工作簿 + Workbook workbook = new XSSFWorkbook(); + // 创建一个工作表 + Sheet sheet = workbook.createSheet("查询结果"); + + // 创建表头单元格 + Row headerRow = sheet.createRow(0); + ResultSetMetaData metaData = resultSet.getMetaData(); + int columnCount = metaData.getColumnCount(); + + // 设置表头单元格样式 + CellStyle headerStyle = workbook.createCellStyle(); + headerStyle.setBorderTop(BorderStyle.THIN); + headerStyle.setBorderBottom(BorderStyle.THIN); + headerStyle.setBorderLeft(BorderStyle.THIN); + headerStyle.setBorderRight(BorderStyle.THIN); + headerStyle.setFillForegroundColor(IndexedColors.LIGHT_BLUE.getIndex()); + headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); + headerStyle.setFont(workbook.createFont()); + //headerStyle.getFont().setBold(true); + + for (int i = 1; i <= columnCount; i++) { + Cell cell = headerRow.createCell(i - 1); + cell.setCellValue(metaData.getColumnName(i)); + cell.setCellStyle(headerStyle); + } + + headerRow.setHeightInPoints(28); // 设置表头行高为28 + + // 填充数据 + int rowNumber = 1; + while (resultSet.next()) { + Row row = sheet.createRow(rowNumber++); + row.setHeightInPoints(28); // 设置数据行高为28 + + // 设置数据单元格样式 + CellStyle dataStyle = workbook.createCellStyle(); + dataStyle.setBorderTop(BorderStyle.THIN); + dataStyle.setBorderBottom(BorderStyle.THIN); + dataStyle.setBorderLeft(BorderStyle.THIN); + dataStyle.setBorderRight(BorderStyle.THIN); + + for (int i = 1; i <= columnCount; i++) { + Cell cell = row.createCell(i - 1); + Object value = resultSet.getObject(i); + cell.setCellValue(value.toString()); + cell.setCellStyle(dataStyle); + } + } + + // 自动调整列宽 + for (int i = 0; i < columnCount; i++) { + sheet.autoSizeColumn(i); + } + + // 将工作簿写入文件 + try (FileOutputStream fileOut = new FileOutputStream(excelFilePath)) { + workbook.write(fileOut); + } + // 关闭工作簿和结果集 + workbook.close(); + resultSet.close(); + } + public static List getFiles(String path) { + List files = new ArrayList<>(); + File file = new File(path); + File[] tempList = file.listFiles(); + + for (int i = 0; i < tempList.length; i++) { + if (tempList[i].isFile()) { + files.add(tempList[i].toString()); + } + } + return files; + } + + public static void main(String[] args) throws ClassNotFoundException, SQLException { + // 指定目录路径 + String directoryPath = "C:\\Users\\Administrator\\Desktop\\DataBase\\Sql"; + // SQLite数据库的URL + String url = "jdbc:sqlite:C:/Users/Administrator/Desktop/DataBase/edudb_gather_220100000000_full_fullreport.db"; + + // 加载SQLite的JDBC驱动 + Class.forName("org.sqlite.JDBC"); + + // 建立连接 + Connection connection = DriverManager.getConnection(url); + Statement statement = connection.createStatement(); + // 遍历所有文件 + List files = getFiles(directoryPath); + + for (String file : files) { + String sql = FileUtil.readUtf8String(file); + try { + String excelFilePath = file.replace(".sql", ".xlsx"); + ResultSet resultSet = statement.executeQuery(sql); + exportResultSetToExcel(resultSet, excelFilePath); + + System.out.println("数据已导出到Excel文件:" + excelFilePath); + }catch (Exception err){ + System.out.println(file+" "+err); + } + } + connection.close(); + } +} From 288f9a745781a2af0cb82ad32e248b63144fdcb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Mon, 28 Oct 2024 17:52:07 +0800 Subject: [PATCH 2/2] 'commit' --- src/main/java/com/dsideal/base/Tools/GenerateExcel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/dsideal/base/Tools/GenerateExcel.java b/src/main/java/com/dsideal/base/Tools/GenerateExcel.java index 54a50e17..c88516b2 100644 --- a/src/main/java/com/dsideal/base/Tools/GenerateExcel.java +++ b/src/main/java/com/dsideal/base/Tools/GenerateExcel.java @@ -29,7 +29,7 @@ public class GenerateExcel { headerStyle.setBorderBottom(BorderStyle.THIN); headerStyle.setBorderLeft(BorderStyle.THIN); headerStyle.setBorderRight(BorderStyle.THIN); - headerStyle.setFillForegroundColor(IndexedColors.LIGHT_BLUE.getIndex()); + headerStyle.setFillForegroundColor(IndexedColors.LIGHT_GREEN.getIndex()); headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); headerStyle.setFont(workbook.createFont()); //headerStyle.getFont().setBold(true);