Apache POI - Таблицы
В этой главе объясняется, как создать электронную таблицу и управлять ею с помощью 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 Id | Имя Emp | Обозначение | 
|---|---|---|
| TP01 | Гопал | Технический менеджер | 
| TP02 | Маниша | Proof Reader | 
| TP03 | Мастхан | Технический писатель | 
| TP04 | Satish | Технический писатель | 
| TP05 | Кришна | Технический писатель | 
Следующий код используется для записи вышеуказанных данных в электронную таблицу.
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 файл выглядит следующим образом.
                Читать из таблицы
Давайте рассмотрим указанный выше файл 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() + " \t\t ");
                  break;
               
               case Cell.CELL_TYPE_STRING:
                  System.out.print(
                  cell.getStringCellValue() + " \t\t ");
                  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