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);