POI文件上传及使用详解

Apache POI使用详解

POI结构与常用类

1、POI介绍

Apache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 .NET的开发人员则可以利用NPOI (POI for .NET) 来存取 Microsoft Office文档的功能。

2、POI结构说明

包名称说明

HSSF提供读写Microsoft Excel XLS格式档案的功能。

XSSF提供读写Microsoft Excel OOXML XLSX格式档案的功能。

HWPF提供读写Microsoft Word DOC格式档案的功能。

HSLF提供读写Microsoft PowerPoint格式档案的功能。

HDGF提供读Microsoft Visio格式档案的功能。

HPBF提供读Microsoft Publisher格式档案的功能。

HSMF提供读Microsoft Outlook格式档案的功能。

3、POI常用类说明

类名                     说明

HSSFWorkbook           Excel的文档对象

HSSFSheet     

Excel的表单

HSSFRow               

Excel的行

HSSFCell     

Excel的格子单元

HSSFFont                Excel字体

 

HSSFDataFormat        格子单元的日期格式

HSSFHeader             Excel文档Sheet的页眉

HSSFFooter             Excel文档Sheet的页脚

HSSFCellStyle          格子单元样式

HSSFDateUtil           日期

HSSFPrintSetup        打印

 

HSSFErrorConstants   错误信息表

Excel的基本操作

java POI 生成 excel 文件写入本地

    /**
     * java 生成 excel 文件写入本地
     * */
    @RequestMapping(value = "/excel")
    @ResponseBody
    public void createExcel(){
        //windows和linux的斜杠不一样,而且java对于“/”需要转义处理,File.separator可以跨平台实现
        //切记!!!路径后面要写到具体的文件名称,不能只写到文件夹,否则会报拒绝访问
        String filePath = "D:"+File.separator+"YiFan"+File.separator+"excel.xls";//文件路径
        File file = new File(filePath);
        try {
            OutputStream ops = new FileOutputStream(file);
            //创建excel文件
            HSSFWorkbook workbook = new HSSFWorkbook();
            //创建excel工作表
            HSSFSheet sheet = workbook.createSheet("sheet1");
            //为工作表增加一行
            HSSFRow row =  sheet.createRow(0);
            //在指定的行上增两个单元格
            row.createCell(0).setCellValue("姓名");
            row.createCell(1).setCellValue("密码");
            //调用输出流把excel文件写入本地磁盘
            workbook.write(ops);
            //关闭输出流
            ops.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

java POI 读取本地 excel 文件

     /**
     * java POI 读取本地excel文件
     *
     */
    @RequestMapping(value = "/ExcelOperate")
    @ResponseBody
    public void ExcelOperate(){
        String filePath = "D:"+File.separator+"YiFan"+File.separator+"excel.xls";
        try{
        BufferedInputStream  bufferedInputStream = new BufferedInputStream(new FileInputStream(new File(filePath)));//流读取文件
        POIFSFileSystem fileSystem = new POIFSFileSystem(bufferedInputStream);//采用POIFSFileSystem 进行解析
        //读取excel文件
        HSSFWorkbook hssfWorkbook = new HSSFWorkbook(fileSystem);
        //根据名称获取指定的excel工作薄
        HSSFSheet sheet = hssfWorkbook.getSheet("sheet1");
        String fileName = hssfWorkbook.getSheetName(0);//返回读取文件名称
        int last = sheet.getLastRowNum();//获取最后一行的值,去除空格
        int first = sheet.getFirstRowNum();
        List<String> list = new ArrayList<>();
        //遍历获取数据
        for (int i =0;i<=last;i++){
            HSSFRow row = sheet.getRow(i);//获取i行
            int cell = row.getLastCellNum();//获取i行中的列数
            for(int j =0;j<cell;j++){
                String value =  row.getCell(j).getStringCellValue();
                list.add(value);
            }
            bufferedInputStream.close();
        }
        
        }catch (Exception e){
            e.printStackTrace();
        }
    }

2019.04.11 落笔

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值