如何用Java把查询出的内容导出到Excel表格
比如说我查询到了数据库的一些数据,想要把这些数据有组织的导出到一个excel文件里面,应该怎么实现?
如何用Java把查询出的内容导出到Excel表格
比如说我查询到了数据库的一些数据,想要把这些数据有组织的导出到一个excel文件里面,应该怎么实现?
你可以使用 Apache POI 库来创建和修改 Excel 文件。以下是一个简单的例子,它将查询到的数据写入到 Excel 文件中:
import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExportToExcel {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "root";
String password = "password";
String query = "SELECT * FROM mytable";
try (Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query)) {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Data");
int rowNum = 0;
while (rs != null && rs.next()) {
Row row = sheet.createRow(rowNum++);
int colNum = 0;
for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
Cell cell = row.createCell(colNum++);
cell.setCellValue(rs.getString(i));
}
}
try (FileOutputStream outputStream = new FileOutputStream("data.xlsx")) {
workbook.write(outputStream);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
在这个例子中,我们首先创建一个 Workbook
对象和一个 Sheet
对象。然后,我们遍历查询结果,为每一行创建一个 Row
对象,并为每个单元格创建一个 Cell
对象。最后,我们将工作簿写入到一个名为 "data.xlsx" 的文件中。在执行这个代码之前,你需要确保你的项目中包含了 Apache POI 的库。你可以通过 Maven 或者 Gradle 来添加这个依赖。
具体不知道是如何把数据查询出来的,通常可以通过循环来把数据设置到Excel上。
下面是通过循环设置数据的方法,其基于GcExcel的API,可以给特定的单元格设值。
public void LoopSetValue() {
Workbook wb = new Workbook();
IWorksheet sheet = wb.getWorksheets().get(0);
int val = 1;
for (int row = 0; row < 10; row++) {
for (int col = 0; col < 10; col++) {
sheet.getRange(row, col).setValue(val);
val++;
}
}
wb.save("output/loopSetValue.xlsx");
}
导出后结果如图:
另外,GcExcel 支持直接将二维数组设置到一片区域上,这样就无需在使用二重循环,同时执行速度上,也更快。
public void SetArrayToRange() {
Workbook wb = new Workbook();
IWorksheet sheet = wb.getWorksheets().get(0);
Object[][] data = new Object[][]{
{"Name", "City", "Birthday", "Eye color", "Weight", "Height"},
{"Richard", "New York", new GregorianCalendar(1968, 5, 8), "Blue", 67, 165},
{"Nia", "New York", new GregorianCalendar(1972, 6, 3), "Brown", 62, 134},
{"Jared", "New York", new GregorianCalendar(1964, 2, 2), "Hazel", 72, 180},
{"Natalie", "Washington", new GregorianCalendar(1972, 7, 8), "Blue", 66, 163},
{"Damon", "Washington", new GregorianCalendar(1986, 1, 2), "Hazel", 76, 176},
{"Angela", "Washington", new GregorianCalendar(1993, 1, 15), "Brown", 68, 145}
};
sheet.getRange(0, 0, data.length, data[0].length).setValue((Object) data);
wb.save("output/SetArrayToRange.xlsx");
}
结果如下:
更多的Excel读取和设置,可以参考GcExcel的区域操作:GcExcel Java 在线Demo | 区域操作
15 回答8.4k 阅读
8 回答6.2k 阅读
5 回答3.2k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答4k 阅读
2 回答2.8k 阅读✓ 已解决
先导入POI相关的第三方jar包
向Excel写入文件