如何用Java把查询出的内容导出到Excel表格?
如何用Java把查询出的内容导出到Excel表格
比如说我查询到了数据库的一些数据,想要把这些数据有组织的导出到一个excel文件里面,应该怎么实现?
回答:
先导入POI相关的第三方jar包
<!-- 使用apache poi需要的依赖 --> <dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.19</version>
</dependency>
<!-- 使用druid连接池建立java程序与mysql数据库的连接需要的依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.9</version>
</dependency>
向Excel写入文件
package excelTest;import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 使用poi将数据写入excel文件中
*/
public class WriteExcelTest {
public static void main(String[] args) {
XSSFWorkbook xssfWorkbook = null;
FileOutputStream out = null;
try {
//创建工作簿
xssfWorkbook = new XSSFWorkbook();
//创建表
XSSFSheet xssfSheet = xssfWorkbook.createSheet("first_sheet");
//创建行,这里创建四行
XSSFRow row1 = xssfSheet.createRow(0);
XSSFRow row2 = xssfSheet.createRow(1);
XSSFRow row3 = xssfSheet.createRow(2);
XSSFRow row4 = xssfSheet.createRow(3);
//为第一行创建单元格并赋值
row1.createCell(0).setCellValue("姓名");
row1.createCell(1).setCellValue("年龄");
row1.createCell(2).setCellValue("性别");
//为第二行创建单元格并赋值
row2.createCell(0).setCellValue("张三");
row2.createCell(1).setCellValue("18");
row2.createCell(2).setCellValue("男");
//为第三行创建单元格并赋值
row3.createCell(0).setCellValue("李四");
row3.createCell(1).setCellValue("17");
row3.createCell(2).setCellValue("男");
//为第四行创建单元格并赋值
row4.createCell(0).setCellValue("黄蓉");
row4.createCell(1).setCellValue("20");
row4.createCell(2).setCellValue("女");
//创建一个输出流
out = new FileOutputStream("D:/output.xlsx");
//将创建的工作簿内容写入磁盘
xssfWorkbook.write(out);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
//关闭资源,需做非空判断
if (out != null) {
out.close();
}
if (xssfWorkbook != null) {
xssfWorkbook.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println("输出成功!");
}
}
回答:
具体不知道是如何把数据查询出来的,通常可以通过循环来把数据设置到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 | 区域操作
以上是 如何用Java把查询出的内容导出到Excel表格? 的全部内容, 来源链接: utcz.com/p/945485.html