如何用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

回到顶部