Apache POI(1):工作簿(workbook)和电子表(spreadsheet)

来源:互联网 发布:中国利用外资数据 编辑:程序博客网 时间:2024/05/16 11:48

1 演示代码

package com.hthk.iisz.util;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.util.Iterator;import java.util.Map;import java.util.Set;import java.util.TreeMap;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.usermodel.XSSFRow;import org.apache.poi.xssf.usermodel.XSSFSheet;import org.apache.poi.xssf.usermodel.XSSFWorkbook;/* * Workbook 工作簿 * Spreadsheet 电子表格,电子表格是在Excel文件中的页面;它包含具有特定名称的行和列。 * Row,Cell 行,列 *  */public class WorkBookAndSheet {public static void main(String[] args) throws Exception{//File file = createBlankWorkbook();//Workbook workbook = openExistingWorkbook(file);//createSheetAndFillData();readExcelData();}//创建一个空白的Workbookpublic static File createBlankWorkbook() throws Exception {//Create Blank WorkBookXSSFWorkbook workbook = new XSSFWorkbook();//create file system using specific nameFile file = new File("createworkbook.xlsx");FileOutputStream out = new FileOutputStream(file);//write operation workbook using file out objectworkbook.write(out);//Write out this workbook to an Outputstream.out.close();System.out.println("createworkbook.xlsx written successfully");return file;}//打开一个已经存在的Workbookpublic static Workbook openExistingWorkbook(File file) throws Exception{FileInputStream fis = new FileInputStream(file);//Get the workbook instance for XLSX fileXSSFWorkbook workbook = new XSSFWorkbook(fis);if(file.isFile()&& file.exists()){System.out.println("open successfully");}else{System.out.println("open failed");}return workbook;}//创建一个空白的Workbook并写入数据public static void createSheetAndFillData() throws Exception{//create blank workbookXSSFWorkbook workbook = new XSSFWorkbook();//create  a blank  spreadsheet XSSFSheet sheet = (XSSFSheet) workbook.createSheet("Employ Info");//create row objectXSSFRow row;//this data needs to be written(Object[])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" });//iterate over data and write to sheetSet<String> keyid = empinfo.keySet();int rowid=0;for(String key : keyid){row = sheet.createRow(rowid++);//create row objectObject[] objectArr = empinfo.get(key);int cellid = 0;for(Object obj : objectArr){Cell cell = row.createCell(cellid++);//create cell objectcell.setCellValue((String)obj);}}//Write the workbook in file systemFileOutputStream fos = new FileOutputStream(new File("employ.xlsx"));workbook.write(fos);fos.close();System.out.println("fill data successfully");}//读取Workbook的内容并输出public static void readExcelData() throws Exception{FileInputStream fis = new FileInputStream(new File("employ.xlsx"));XSSFWorkbook workbook = new XSSFWorkbook(fis);XSSFSheet sheet = workbook.getSheetAt(0);//index - of the sheet number (0-based physical & logical)Iterator<Row> rowIterator = sheet.iterator();    while(rowIterator.hasNext()){    XSSFRow row = (XSSFRow) rowIterator.next();    Iterator<Cell> cellIterator = row.cellIterator();    while(cellIterator.hasNext()){    Cell cell = cellIterator.next();    switch (cell.getCellType()) {case Cell.CELL_TYPE_NUMERIC:System.out.print(cell.getNumericCellValue() +"\t\t ");break;case Cell.CELL_TYPE_STRING:System.out.print(cell.getStringCellValue()+"\t\t ");break;}        }    System.out.println();    }    fis.close();    }}

2 同类技术

 Java Aspose Cells,JXL,JExcel.关于这几种的技术的比较,可参考一下连接http://www.yiibai.com/apache_poi/apache_poi_java_excel.html

1 0
原创粉丝点击