File file = new File("path");
String response = given().multipart(file).when().post("URL").getBody().asString();
byte[] bytes = response.getBytes("ISO-8859-1");
InputStream stream = new ByteArrayOutputStream(bytes);
XSSFWorkbook workbook = new XSSFWorkbook(stream);
catch(Exception e){
e.printStackTrace();
这是为请求生成响应的代码
XSSFWorkbook workBook; //this workBook has the workbook sent as HTTP request
//code to make changes in workBook
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
workBook.write(outStream);
byte[] byteArray = outStream.toByteArray();
String responseBody = new String(byteArray, "ISO-8859-1");
context.response().putHeader("Content-Type", "multipart/form-data").setStatusCode(200).end(responseBody);
因此,我想做的是发送xlsx文件作为请求进行一些更改,并将其作为字符串响应返回,然后将其转换回xssfworkbook.当转换回来时,我在下面的行中得到错误-
XSSFWorkbook workbook = new XSSFWorkbook(stream);
我得到的错误是
java.util.zip.ZipException: invalid code lengths set
Inm小程序商店 | Vultr中文网
您不能简单地以您尝试的方式将字节数组作为ISO-8859-1编码的文本发送.
会有一些特殊字符可能会被替换/截断/修改.
当前,您将二进制数据和纯文本通道(HTTP)混合在一起.您将需要做不同的事情,要么使用二进制数据传输而不将其转换为String,要么使用某种二进制文本表示法,例如https://en.wikipedia.org/wiki/Binary-to-text_encoding,最常见的是Base64
我正在使用Apache POI,并且尝试将xlsx文件作为HTTP请求发送并作为响应返回.我正在使用jayway来确保发出HTTP请求.这是我发送请求的代码部分 File file = new File("path");String response = given().multipart(file).when().post("URL").getBody().asStrin...
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=./excelexportdemo.hprof
-Xloggc:./gc-%t.log
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-XX:+PrintGCTimeStamps
-XX:+HeapDumpAfterFullGC
-XX:+HeapDumpBeforeFullGC
Apache POI SXSSFWorkbook
Apache POI XSSF工作簿
csv2xlsx
简单(并非最优雅)的工具,可使用Apache POI将CSV转换为xslx
该工具还可以转换csv文件编码。 (输出临时文件)尚未为编码添加字节顺序标记(到目前为止)
较早版本的Apache POI已添加到gradle中,因为我需要Java 1.5兼容性。
较新版本的Apache POI也可以使用。
将byte数组转成poi需要的workbook
最近在公司遇到一个需求,要将前端传过来的byte数组生成excel,然后将数据生成一个List<Map<String,String>> 数据给下方调用者。
废话少说,直接上代码:
public static List<Map<String, String>> getExcelListMap(byte[]...
Java 后台 Excel 文件生成后转化为字节流java excel 使用 poi组件, HSSFWorkbook workBook = new HSSFWorkbook();
对于workBook生成字节流,很容易发现有个workBook .getBytes(),但是,是不可用的,下载以后打不开,
如果下载,正确的写法为
workBook.write(response.getOutputStr
Java Excel 使用 POI组件, HSSFWorkbook workBook = new HSSFWorkbook();
对于workBook生成字节流,有一个workBook .getBytes(),但是这个方法下载以后打不开,因为它只保存了HSSF部分字节(API文档说明)。
如果下载文件,正确的写法为
workBook.write(response.getOutputStre...
@RequestMapping("/getOrderRankReportExcel")
public void getOrderRankReportExcel(@RequestParam Long startDate,
@RequestParam L
HSSFWorkbook excelWorkBook = new HSSFWorkbook();
ExcelUtil.saveToExcel(excelWorkBook, resultlist, tableColnm, sheetName);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
try {
// 将EXCEL文件写进流内
excelWorkBook.write(byteArra.
没有使用maven的 可以自己去百度搜索poi这个工具的jar包
详细使用可以去这个博客 https://blog.csdn.net/vbirdbest/article/details/72870714(转载)
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.11&l.
使用的是JAVA POI实现的导出Excel;
POI 提供了对2003版本的Excel的支持 ---- HSSFWorkbook
POI 提供了对2007版本以及更高版本的支持 ---- XSSFWorkbook
引入相关依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-.
public static <T> XSSFWorkbook buildExcelXlsx(List<ExportItem> template , List<T> dataList){
if (dataList.isEmpty()){
throw new PmsException("未找到导出的数据");
XSSFWorkbook xssfWorkbook = nu
HSSF
Workbook 直接
转换成字节导出的excel文件错误
ByteArrayOutputStream bos = new
ByteArrayOutputStream();
try {
workbook.write(bos);
} finally {
bos.close();
byte[] bytes = bos.to
ByteArray();
使用Apache POI可以在Java中操作Microsoft Office格式的文件,包括Excel、Word和PowerPoint等。下面是在Java中使用Apache POI的配置过程:
1. 下载Apache POI的最新版本,可以从官网或Maven仓库下载。
2. 将下载的jar包添加到Java项目的classpath中。
3. 在Java代码中导入Apache POI的相关类,比如:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
4. 创建Excel文件并写入数据,示例代码如下:
// 创建工作簿
Workbook workbook = new XSSFWorkbook();
// 创建工作表
Sheet sheet = workbook.createSheet("Sheet1");
// 创建行
Row row = sheet.createRow(0);
// 创建单元格并写入数据
Cell cell = row.createCell(0);
cell.setCellValue("Hello, World!");
// 保存文件
FileOutputStream outputStream = new FileOutputStream("example.xlsx");
workbook.write(outputStream);
workbook.close();
outputStream.close();
以上就是在Java中使用Apache POI的基本配置和使用方法。