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
HSSFWorkbook 直接转换成字节导出的excel文件错误 ByteArrayOutputStream bos = new ByteArrayOutputStream(); try { workbook.write(bos); } finally { bos.close(); byte[] bytes = bos.toByteArray();
使用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的基本配置和使用方法。