• POI操作EXCEL表格——入门


    POI之——读写入门(poi的初级使用

    介绍
     Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显示MS Office文件。
    这由Apache软件基金会开发使用Java分布式设计或修改Microsoft Office文件的开源库。它包含类和方法对用户输入数据或文件到MS Office文档进行解码。

    结构
     HSSF - 提供读写Microsoft Excel格式档案的功能。
     XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。
     HWPF - 提供读写Microsoft Word格式档案的功能。
     HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
     HDGF - 提供读写Microsoft Visio格式档案的功能。
    对象概念:
     每一个Excel文件在poi中就是一个workbook对象,workbook可以包含多个sheet,sheet中有row对象。和cell对象,row代表一行,cell代表一个最小单元格。写Excel基本的操作流程:1、创建一个workbook对象(如:创建XSSFWorkbook对象);2、在workbook下创建sheet对象(如:创建 workbook.createSheet(‘名称’));3、在sheet中创建一row对象(例:spreadsheet.createRow(rowid));4、在row下创建cell对象(例:row.createCell(cellid))
    例:(注意:判断获取的文件后缀名)


    import java.io.File;
    import java.io.FileOutputStream;
    import java.util.Map;
    import java.util.Set;
    import java.util.TreeMap;
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.xssf.usermodel.XSSFRow;
    import org.apache.poi.xssf.usermodel.XSSFSheet;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    
    public class Writesheet {
    public static void main(String[] args) throws Exception 
       {
          //创建空白的的 workbook
          XSSFWorkbook workbook = new XSSFWorkbook(); 
          //创建空白的 sheet
          XSSFSheet spreadsheet = workbook.createSheet(" Employee Info ");
          //声明row对象
          XSSFRow row;
          //将数据放到map中
          Map < String, Object[] > empinfo = 
          new TreeMap < String, Object[] >();
          empinfo.put( "1", new Object[] { "EMP ID", "EMP NAME", "DESIGNATION" });
          empinfo.put( "2", new Object[] { "tp01", "Gopal", "Technical Manager" });
          empinfo.put( "3", new Object[] { "tp02", "Manisha", "Proof Reader" });
          empinfo.put( "4", new Object[] { "tp03", "Masthan", "Technical Writer" });
          empinfo.put( "5", new Object[] { "tp04", "Satish", "Technical Writer" });
          empinfo.put( "6", new Object[] { "tp05", "Krishna", "Technical Writer" });
          //遍历map  将数据写到sheet中
          Set < String > keyid = empinfo.keySet();
          int rowid = 0;
          for (String key : keyid)
          { 
             row = spreadsheet.createRow(rowid++);//在sheet下创建第1行
             Object [] objectArr = empinfo.get(key);
             int cellid = 0;//声明 单元格ID
             for (Object obj : objectArr)//遍历数据添加到该行中
             {
                Cell cell = row.createCell(cellid++);//通过ID创建 cell
                cell.setCellValue((String)obj);//向cell里添加数据
             }
          }
          //将编写的文件对象 写入到文件中
          FileOutputStream out = new FileOutputStream( 
          new File("Writesheet.xlsx"));
          workbook.write(out);
          out.flush();
          out.close();
          System.out.println( 
          "Writesheet.xlsx written successfully" );
       }
    }



    读取Excel表格流程与读取差不多,文档模型就是(workbook-->sheet-->row-->cell)
    例如:(注意:判断获取的文件后缀名)

    import java.io.File;
    import java.io.FileInputStream;
    import java.util.Iterator;
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.Row;
    import org.apache.poi.xssf.usermodel.XSSFRow;
    import org.apache.poi.xssf.usermodel.XSSFSheet;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    public class Readsheet {
    
    static XSSFRow row;
       public static void main(String[] args) throws Exception 
       {
          FileInputStream fis = new FileInputStream(new File("WriteSheet.xlsx"));//创建文件对象
          XSSFWorkbook workbook = new XSSFWorkbook(fis);//通过文件对象创建Workbook
          XSSFSheet spreadsheet = workbook.getSheetAt(0);//从workbook中获取第0个sheet
          Iterator < Row > rowIterator = spreadsheet.iterator();//从sheet获取迭代器(行)
          while (rowIterator.hasNext()){
             row = (XSSFRow) rowIterator.next();//得到当前行
             Iterator < Cell > cellIterator = row.cellIterator();//通过row获取cell迭代器
             while ( cellIterator.hasNext()){
                Cell cell = cellIterator.next();
                switch (cell.getCellType()) {//不同cell中数据类型不同  需要调用不同的get方法
                   case Cell.CELL_TYPE_NUMERIC://cell_type_numeric
                   System.out.print( 
                   cell.getNumericCellValue() + "	 " );
                   break;
                   case Cell.CELL_TYPE_STRING://cell_type_string
                   System.out.print(
                   cell.getStringCellValue() + "	 " );
                   break;
                }
             }
             System.out.println();//当前行结束
          }
          fis.close();
       }
    }
    




  • 相关阅读:
    uNFS搭建
    nodejs+koa 后台框架结构、demo学习地址
    Apache 基本配置 代理 重定向 跨域 https ssl证书 在windows下常用命令
    新版 Mediasoup Windows 安装 编译
    腾讯云服务器,在本地域名不能访问,IP可以访问;端口访问差异:有的地方能访问有的不能
    nodejs 程序打包 打包 koa express 项目 源代码保护加密
    windows 设置修改本地 hosts 访问 github 快速访问 提高访问 github 速度
    Flutter开发 备用网站地址
    redis in windows
    CRLF和LF的差异
  • 原文地址:https://www.cnblogs.com/dingzuoheng/p/12805083.html
Copyright © 2020-2023  润新知