Java中生成excel,并进行数据的写入读出

来源:互联网 发布:知行乐学教育集团 编辑:程序博客网 时间:2024/06/05 06:55

最近在公司写单元测试时,从前台传入的参数是由 excel 数据转化的字节组,在后台中把字节数组转化为 XSSFSheet 后转成 VO 。所以在写单元测试时要把字节数组作为输入,之前没有遇到过这种情况,一开始尝试把后台把字节数据转化成 XSSFSheet 的方法模拟掉,行不通。

解决方法:

1、用 XSSFWorkbook 对象生成 Excel 的对象,添加数据,然后转化为字节数组。

XSSFWorkbook workbook = new XSSFWorkbook();

                XSSFSheet sheet = workbook.createSheet();//添加Worksheet(不添加sheet时生成的xls文件打开时会报错)

                XSSFRow row=sheet.createRow((short)(0)); //第一行

                row.createCell(0).setCellValue("流水号"); //设置第一个(从0开始)单元格的数据

                row.createCell(1).setCellValue("供应商名称"); //设置第二个(从0开始)单元格的数据

                XSSFRowrow2=sheet.createRow((short)(1)); //第二行

                row2.createCell(0).setCellValue("TBSO171010808930"); //设置第一个(从0开始)单元格的数据

                row2.createCell(1).setCellValue("王***");//设置第二个(从0开始)单元格的数据

                ByteArrayOutputStream os = new ByteArrayOutputStream();

                try {

                         workbook.write(os);

                } catch (IOException e) {

                         e.printStackTrace();

                }

                byte[] bytes = os.toByteArray()

2、手动新建一个 excel ,写入数据,保存到指定 test/main/source 目录中

                String filePath ="/excelTestCase/manualCloseAccountsSettleOrder/manualSettleOrderTemplate.xlsx";

                byte[] bytes =this.getBytes(filePath);

public byte[] getBytes(String filePath){  

        byte[] buffer = null;  
        try {  
        MockServletContext servletContext = new MockServletContext();
            MockHttpServletRequest request = new MockHttpServletRequest(servletContext);
            FlexContext.setThreadLocalHttpRequest(request);
            SecurityUtil.getContextPath();
            InputStream in = new ClassPathResource(filePath).getInputStream();
            ByteArrayOutputStream bos = new ByteArrayOutputStream(1000);  
            byte[] b = new byte[1000];  
            int n;  
            while ((n = in.read(b)) != -1) {  
                bos.write(b, 0, n);  
            }  
            in.close();  
            bos.close();  
            buffer = bos.toByteArray();  
        } catch (FileNotFoundException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
        return buffer;  
    }  

原创粉丝点击