java从数据库导出数据到excel_JAVA:将数据(从数据库)导出到Excel并将其发送到客户端...

好的.所以最后我完成了所有的障碍,并找到了一种方法来做到这一点.

我意识到我遇到的问题不是创建excel文件,问题是将其发送到客户端,而且也没有在服务器上创建文件或临时文件.

所以这里是如何去做的(我已经从原始代码中删除了细节,以便您可以轻松理解它).

在操作文件中,您首先必须创建HSSFWorkbook对象,将数据放在其上,然后不将其保存到服务器上的磁盘,使用inputstream将其发送到客户端.

动作文件代码:

public String execute(){

setContentDisposition("attachment; filename=\"" + ename + ".xls\"");

try{

HSSFWorkbook hwb=new HSSFWorkbook();

HSSFSheet sheet = hwb.createSheet("new sheet");

//You can repeat this part using for or while to create multiple rows//

HSSFRow row = sheet.createRow(rowNum);

row.createCell(0).setValue("col0");

row.createCell(1).setValue("col1");

row.createCell(2).setValue("col2");

row.createCell(3).setValue("col3");

.

.

.

///

///

//Now you are ready with the HSSFworkbook object to be sent to client//

///

ByteArrayOutputStream baos = new ByteArrayOutputStream();

hwb.write(baos);

excelStream = new ByteArrayInputStream(baos.toByteArray());

///

Here HSSFWorkbook object is sent directly to client w/o saving on server///

///

}catch(Exception e){

System.out.println(e.getMessage());

}

return SUCCESS;

}

现在在struts-config文件中写一下(注意excelStream& contentDisposition已在动作本身设置,结果类型也是org.apache.struts2.dispatcher.StreamResult):

"application/vnd.ms-excel"

excelStream

contentDisposition

1024

而已.现在,当执行操作时,将提示用户保存或打开文件.

🙂

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 InfluxDB Java 客户端来查询 InfluxDB 数据库中的数据并将其导出Excel 文件中。具体步骤如下: 1. 首先,你需要在项目中添加 InfluxDB Java 客户端的依赖,可以使用 Maven 或 Gradle 来添加依赖。 Maven 依赖: ```xml <dependency> <groupId>org.influxdb</groupId> <artifactId>influxdb-java</artifactId> <version>2.19</version> </dependency> ``` Gradle 依赖: ```groovy implementation 'org.influxdb:influxdb-java:2.19' ``` 2. 创建 InfluxDB 客户端并连接到 InfluxDB 服务器。 ```java InfluxDBClient client = InfluxDBClientFactory.create("http://localhost:8086", "username", "password".toCharArray()); ``` 3. 构建查询并执行查询。 ```java String query = "SELECT * FROM my_measurement"; QueryResult result = client.getQueryApi().query(query); ``` 4. 将查询结果导出Excel 文件中。 这里我们可以使用 Apache POI 库来处理 Excel 文件。下面是一个简单的例子: ```java Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("My Data"); int rowNumber = 0; for (QueryResult.Result queryResult : result.getResults()) { for (QueryResult.Series series : queryResult.getSeries()) { // Write column headers Row headerRow = sheet.createRow(rowNumber++); int columnNumber = 0; for (String columnName : series.getColumns()) { headerRow.createCell(columnNumber++).setCellValue(columnName); } // Write data rows for (List<Object> values : series.getValues()) { Row dataRow = sheet.createRow(rowNumber++); columnNumber = 0; for (Object value : values) { dataRow.createCell(columnNumber++).setCellValue(value.toString()); } } } } FileOutputStream fileOutputStream = new FileOutputStream("data.xlsx"); workbook.write(fileOutputStream); workbook.close(); fileOutputStream.close(); ``` 完整的代码示例: ```java import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.influxdb.InfluxDBClient; import org.influxdb.InfluxDBClientFactory; import org.influxdb.dto.QueryResult; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; public class InfluxDBExport { public static void main(String[] args) throws IOException { InfluxDBClient client = InfluxDBClientFactory.create("http://localhost:8086", "username", "password".toCharArray()); String query = "SELECT * FROM my_measurement"; QueryResult result = client.getQueryApi().query(query); Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("My Data"); int rowNumber = 0; for (QueryResult.Result queryResult : result.getResults()) { for (QueryResult.Series series : queryResult.getSeries()) { // Write column headers Row headerRow = sheet.createRow(rowNumber++); int columnNumber = 0; for (String columnName : series.getColumns()) { headerRow.createCell(columnNumber++).setCellValue(columnName); } // Write data rows for (List<Object> values : series.getValues()) { Row dataRow = sheet.createRow(rowNumber++); columnNumber = 0; for (Object value : values) { dataRow.createCell(columnNumber++).setCellValue(value.toString()); } } } } FileOutputStream fileOutputStream = new FileOutputStream("data.xlsx"); workbook.write(fileOutputStream); workbook.close(); fileOutputStream.close(); client.close(); } } ``` 注意:这里使用的是 Apache POI 4.1.2 和 InfluxDB Java 客户端 2.19 版本。你需要根据自己的需求调整代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值