JAVA导入导出Excel

导入导出Excel有jxl和poi两种方式

这里介绍poi方式

需要准备的jar包

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.17</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.17</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>3.17</version>
        </dependency>

poi 含有解析Excel 2003的类(HSSFWorkbook)

poi-ooxml 含有解析Excel2007+的类(XSSFWorkbook)

读取Excel简单例子

@RequestMapping("/excelParse")
@ResponseBody
public List<Excel> excelParse(MultipartFile pfile,HttpServletRequest request) {

        List<Excel> excelList = new ArrayList<Excel>(10);
        System.out.println(pfile.getOriginalFilename());
        try {
            //Excel2003后缀名为.xls  endsWith用来判断Excel类型
            if(pfile.getOriginalFilename().endsWith("xls")){
                //poi--exl解析
                InputStream is = pfile.getInputStream();
                HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
                HSSFSheet sheet = hssfWorkbook.getSheet("Sheet1");
                for (int i = 1; i < sheet.getLastRowNum(); i++) {
                    HSSFCell riid1 = sheet.getRow(i).getCell(0);
                    HSSFCell riid2 = sheet.getRow(i).getCell(1);
                    HSSFCell riid3 = sheet.getRow(i).getCell(2);
                    HSSFCell riid4 = sheet.getRow(i).getCell(3);
                    HSSFCell riid5 = sheet.getRow(i).getCell(4);

                    System.out.println(riid1 + "\t" + riid2 + "\t" + riid3 + "\t" +riid4 + "\t" + riid5);
                    System.out.println("---------------------------------");

                    //自定义Excel类来封装读取到的Excel数据
                    Excel excel = new Excel();
                    excel.setRiid1(riid1.toString());
                    excel.setRiid2(riid2.toString());
                    excel.setRiid3(riid3.toString());
                    excel.setRiid4(riid4.toString());
                    excel.setRiid5(riid5.toString());
                    excelList.add(excel);
                }
            }else if(pfile.getOriginalFilename().endsWith("xlsx")){//Excel2007+类型为.xlsx
                InputStream is = pfile.getInputStream();
                XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
                XSSFSheet sheet = xssfWorkbook.getSheet("Sheet1");
                for (int i = 1; i < sheet.getLastRowNum(); i++) {
                    XSSFCell riid1 = sheet.getRow(i).getCell(0);
                    XSSFCell riid2 = sheet.getRow(i).getCell(1);
                    XSSFCell riid3 = sheet.getRow(i).getCell(2);
                    XSSFCell riid4 = sheet.getRow(i).getCell(3);
                    XSSFCell riid5 = sheet.getRow(i).getCell(4);

                    System.out.println(riid1 + "\t" + riid2 + "\t" + riid3 + "\t" +riid4 + "\t" + riid5);
                    System.out.println("-----------------------------------------------------------------------------");

                    Excel excel = new Excel();
                    excel.setRiid1(riid1.toString());
                    excel.setRiid2(riid2.toString());
                    excel.setRiid3(riid3.toString());
                    excel.setRiid4(riid4.toString());
                    excel.setRiid5(riid5.toString());
                    excelList.add(excel);
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return excelList;
    }

导出excel并下载

    /**
    *  这里模拟了Excel2003的导出下载过程
    *  如果要导出Excel2007+ 请使用XSSF...(HSSF-->XSSF)类操作
    */
    @RequestMapping("/exportExcel")
    @ResponseBody
    public void exportExcel(){
        //新建文件输出流对象
        FileOutputStream out = null;
        try {
            //在桌面建立一个Excel2003文件
            out = new FileOutputStream("C:/Users/Administrator/Desktop/excel2003.xls");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        //新建workbook
        HSSFWorkbook wb = new HSSFWorkbook();
        //新建sheet
        HSSFSheet sheet = wb.createSheet();
        //新建行  行从坐标0开始 这里是第三行
        HSSFRow row = sheet.createRow(2);
        //设置行高
        row.setHeightInPoints(20);
        //新建单元格  列从坐标0开始  这里是第三列
        HSSFCell cell = row.createCell(2);

        //创建整个文本的字体对象,workbook创建
        HSSFFont cnFont = wb.createFont();
        //设置字体行高,字体名字
        cnFont.setFontHeightInPoints((short)10);
        cnFont.setFontName("隶书");

        //将文本字面格式用到单元格上,新建单元格风格
        HSSFCellStyle cnStyle = wb.createCellStyle();
        cnStyle.setFont(cnFont);
        cell.setCellStyle(cnStyle);

        //单元格内文本对象新建,HSSFRichTextString的应用
        HSSFRichTextString richText = new HSSFRichTextString("中文");
        cell.setCellValue(richText);


        //再建一个单元格,重复上面的设置
        HSSFCell enCell = row.createCell(3);
        HSSFFont enFont = wb.createFont();
        enFont.setFontHeightInPoints((short) 10);
        enFont.setFontName("Arial Black");
        HSSFCellStyle enStyle = wb.createCellStyle();
        enStyle.setFont(enFont);
        enCell.setCellStyle(enStyle);
        enCell.setCellValue(new HSSFRichTextString("English"));
        //单元格列宽
        sheet.setColumnWidth(2, 4000);
        sheet.setColumnWidth(3, 4000);

        //输出
        //设置边框
        sheet.setDisplayGridlines(true);
        //设置打印的边框
        sheet.setPrintGridlines(false);

        //设置打印对象
        HSSFPrintSetup printSetup = sheet.getPrintSetup();
        //设置页边距
        printSetup.setHeaderMargin((double) 0.44); // 页眉
        printSetup.setFooterMargin((double) 0.2);//页脚

        //设置页宽
        printSetup.setFitWidth((short)1);
        printSetup.setFitHeight((short)1000);

        //设置打印方向,横向就是true
        printSetup.setLandscape(false);
        //设置A4纸
        printSetup.setPaperSize(HSSFPrintSetup.A4_PAPERSIZE);

        //打印,关闭流
        try {
            wb.write(out);
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        System.out.println("导出Excel2003成功");
    }

poi导入导出Excel还有已经封装好的通用类

如需使用,请自行搜索

这里只提供一个poi导入导出Excel的简单示例

猜你喜欢

转载自blog.csdn.net/white_xiaosheng/article/details/88790559