java 通过list对象数组中的数据导出excel表,并返回下载url
时间: 2023-05-28 10:05:14 浏览: 160
以下是一个示例代码,它将List对象数组中的数据导出到Excel表格中,并返回下载URL。
```java
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
public class ExcelUtil {
public static String exportToExcel(List<Object[]> dataList, HttpServletResponse response) throws IOException {
Workbook workbook = new HSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet1");
int rowCount = 0;
for (Object[] data : dataList) {
Row row = sheet.createRow(rowCount++);
int columnCount = 0;
for (Object field : data) {
Cell cell = row.createCell(columnCount++);
if (field instanceof String) {
cell.setCellValue((String) field);
} else if (field instanceof Integer) {
cell.setCellValue((Integer) field);
} else if (field instanceof Double) {
cell.setCellValue((Double) field);
}
}
}
ByteArrayOutputStream bos = new ByteArrayOutputStream();
workbook.write(bos);
byte[] bytes = bos.toByteArray();
String fileName = "data.xls";
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
response.setContentLength(bytes.length);
response.getOutputStream().write(bytes);
return "http://localhost:8080/download/" + fileName;
}
}
```
使用示例:
```java
List<Object[]> dataList = new ArrayList<>();
dataList.add(new Object[] { "Name", "Age", "Salary" });
dataList.add(new Object[] { "Tom", 25, 5000.0 });
dataList.add(new Object[] { "Jerry", 30, 6000.0 });
String downloadUrl = ExcelUtil.exportToExcel(dataList, response);
System.out.println("Download URL: " + downloadUrl);
```
此代码将创建一个名为“Sheet1”的工作表,将数据列表中的所有数据写入该表,并将其作为Excel文件导出。然后,它将设置HTTP响应头以触发文件下载,并返回下载URL。请注意,您需要将下载URL替换为您的应用程序的实际URL。