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() + "\t " );
               break;
               case Cell.CELL_TYPE_STRING://cell_type_string
               System.out.print(
               cell.getStringCellValue() + "\t " );
               break;
            }
         }
         System.out.println();//当前行结束
      }
      fis.close();
   }
}




猜你喜欢

转载自blog.csdn.net/qq_32721817/article/details/79160732