Настройка и работа с Apache POI для генерации xls и doc-файлов под linux

Для того, чтобы с нуля, на чистом linux-сервере настроить и работать с java набором библиотек apache poi, которые позволяют конвертировать, открывать, сохранять, изменять документы формата Microsoft Office, нужно сделать следущее (у меня на хостинге стоит Centos 6):
Установить Java Development Kit:

yum install java-1.6.* -y
java -version

Если у вас в репозитории не нашлось такого пакета, может быть вам поможет эта ссылка

Дальше вам надо подключить библиотеку apache poi к вашему коду на Java, пока не знаю как этого сделать вручную без IDE, знаю только, что если использовать Tomcat, то эти библиотеки просто можно скопировать в /usr/share/tomcat6/webapps/JavaBridge/WEB-INF/lib

Если вам нужно делать всё то же самое под винду, вот ваши действия:
Скачиваем ява SDK, устанавливаем Eclipse, запускаем, делаем Hello world по инструкции
http://sotnyk.com/2011/10/09/rukovodstvo-po-eclipse-ide/
Там же в 6м пункте написано как добавлять библиотеку jar к проекту - скачиваем poi-bin*.zip последней версии отсюда http://poi.apache.org/download.html, распаковываем, там лежит несколько jar-файлов, в том числе jar с самой библиотекой.
Еще можно добавить исходники библиотеки, как это сделать тоже написано по ссылке выше, но это делать не обязательно.

После этого в вашем проекте надо просто добавить директивы include области имен org.apache.poi.*
и далее в коде просто использовать функции, специфичные для этой библиотеки и указанные в документации здесь http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/

Пример (если проект называется Excel и главный класс называется MianClass):

package Excel;
 
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
 
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.WorkbookFactory; // This is included in poi-ooxml-3.6-20091214.jar
import org.apache.poi.ss.usermodel.Workbook;
 
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 
 
public class MainClass {
 
	public static void main(String[] args) {
		long startTime = System.currentTimeMillis();
 
 
	    try
	    {
	      // Read from original Excel file.
	      Workbook workbook = WorkbookFactory.create(new FileInputStream("111.xls") );
 
	      // Get the first sheet.
	      //Sheet sheet = workbook.getSheet("стр.2");//
	      Sheet sheet = workbook.getSheetAt(0);
 
	      // Set value of the first cell.
 
	      Row row = sheet.getRow(15);
	      Cell cell = row.getCell(3);
	      cell.setCellValue("Н");
	      workbook.setSheetName(0, "Это щииит 1");
 
	      Sheet new_sheet = workbook.cloneSheet(0);
 
	      //workbook.setSheetName(workbook.getNumberOfSheets() - 1, "Это щииит 2 маза фака!");
 
	      //System.out.println(row.getFirstCellNum());
 
	      //Cell cell = row.getCell(0);
	      //cell.setCellValue("ЯЯЯ!");
 
	      // Write newly modified workbook to a file.
	      FileOutputStream fileOut = new FileOutputStream("new_workbook.xls");
	      workbook.write(fileOut);
	      fileOut.close();
	    }
	    catch(FileNotFoundException e)
	    {
	      System.out.println(e);
	    }
	    catch(IOException e)
	    {
	      System.out.println(e);
	    }
	    catch(InvalidFormatException e)
	    {
	      System.out.println(e);
	    }
 
		long endTime = System.currentTimeMillis();
 
		System.out.println("That took " + (endTime - startTime) + " milliseconds");
 
	}
 
	  public String sumString(double x, double y)
	  {
	    double addsum = x + y;
	    String str = "Sum is  " + addsum;
	    return str;
	  }
}

Comments

Add new comment