zoukankan      html  css  js  c++  java
  • 雷林鹏分享:Apache POI电子表格/Spreadsheet

      本章将介绍如何创建一个电子表格,并使用Java操纵它。电子表格是在Excel文件中的页面;它包含具有特定名称的行和列。

      读完本章后,将能够创建一个电子表格,并能在其上执行读取操作。

      创建电子表格

      首先,让我们创建一个使用在前面的章节中讨论的引用的类的电子表格。按照前面的章节中,首先创建一个工作簿,然后我们就可以去,并创建一个表。

      下面的代码片段用于创建电子表格。

      //Create Blank workbook

      XSSFWorkbook workbook = new XSSFWorkbook();

      //Create a blank spreadsheet

      XSSFSheet spreadsheet = workbook.createSheet("Sheet Name");

      电子表格的行

      电子表格有一个网格布局。行和列被标识与特定的名称。该列标识字母和行用数字。

      下面的代码片段用于创建一个行。

      XSSFRow row = spreadsheet.createRow((short)1);

      写入到电子表格

      让我们考虑雇员数据的一个例子。这里的雇员数据给出以表格形式。

      Emp IdEmp Name称号

      Tp01GopalTechnical Manager

      TP02ManishaProof Reader

      Tp03MasthanTechnical Writer

      Tp04SatishTechnical Writer

      Tp05KrishnaTechnical Writer

      以下代码是用来写上述数据到电子表格。

      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

      {

      //Create blank workbook

      XSSFWorkbook workbook = new XSSFWorkbook();

      //Create a blank sheet

      XSSFSheet spreadsheet = workbook.createSheet(

      " Employee Info ");

      //Create row object

      XSSFRow 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 sheet

      Set < String > keyid = empinfo.keySet();

      int rowid = 0;

      for (String key : keyid)

      {

      row = spreadsheet.createRow(rowid++);

      Object [] objectArr = empinfo.get(key);

      int cellid = 0;

      for (Object obj : objectArr)

      {

      Cell cell = row.createCell(cellid++);

      cell.setCellValue((String)obj);

      }

      }

      //Write the workbook in file system

      FileOutputStream out = new FileOutputStream(

      new File("Writesheet.xlsx"));

      workbook.write(out);

      out.close();

      System.out.println(

      "Writesheet.xlsx written successfully" );

      }

      }

      上面的Java代码保存为Writesheet.java,然后并在命令提示符下编译运行,如下所示:

      $javac Writesheet.java

      $java Writesheet

      这将编译和执行来生成一个Excel文件名为Writesheet.xlsx在当前目录中,在命令提示符处键入以下输出。

      Writesheet.xlsx written successfully

      Writesheet.xlsx文件的内容如下所示。

    Apache POI电子表格/Spreadsheet

      从电子表格读取数据

      让我们考虑上述excel文件命名Writesheet.xslx作为输入文件。注意下面的代码;它是用于从电子表格中读取数据。

      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);

      XSSFSheet spreadsheet = workbook.getSheetAt(0);

      Iterator < Row > rowIterator = spreadsheet.iterator();

      while (rowIterator.hasNext())

      {

      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() + " " );

      break;

      case Cell.CELL_TYPE_STRING:

      System.out.print(

      cell.getStringCellValue() + " " );

      break;

      }

      }

      System.out.println();

      }

      fis.close();

      }

      }

      让我们把上面的代码保存在Readsheet.java文件,然后编译并在命令提示符下运行,如下所示:

      $javac Readsheet.java

      $java Readsheet

      如果您的系统环境配置了POI库,它会编译和执行产生在命令提示符处键入以下输出。

      EMP ID EMP NAME DESIGNATION

      tp01 Gopal Technical Manager

      tp02 Manisha Proof Reader

      tp03 Masthan Technical Writer

      tp04 Satish Technical Writer

      tp05 Krishna Technical Writer

      (编辑:雷林鹏 来源:网络|侵删)

  • 相关阅读:
    多线程《三》进程与线程的区别
    多线程《二》开启线程的两种方式
    多线程《一》线程理论
    多进程《七》生产者消费者模型
    多进程《六》队列
    互斥锁与join
    多进程《五》互斥锁
    多进程《四》守护进程
    再度认识未来——2.11
    开始——2.10
  • 原文地址:https://www.cnblogs.com/pengpeng1208/p/12973039.html
Copyright © 2011-2022 走看看