JBurk94
JBurk94

Reputation: 1

Apache POI - how to create workbook for xlsx

When working with just xls I can create workbooks just fine, however when working with xlsx I cant seem to get it to work.

I am using the poi-ooxml.jar and am trying to use the command

new XSSFWorkbook();

However I get an error message everytime, any thoughts?

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Workbook
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at Testing2.main(Testing2.java:20)

Caused by: java.lang.ClassNotFoundException: org.apache.poi.ss.usermodel.Workbook

at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
... 13 more

Upvotes: 0

Views: 5101

Answers (3)

loknath
loknath

Reputation: 1372

You need to add extra 2 jars to make POI work on (.xlsx) Excel file.

1.first you need to import all the jar poi-3.9

2.Add xmlbeans2.3.0.jar and dom4j-1.6.jar to your classpath. These 2 jars are the dependency jars for handling .xlsx Excel file in POI Library.

Maven project add below dependency

<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version> 
</dependency>

so programming for creating exls sheet

 package com.loknath.lab;

import java.io.FileOutputStream;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;


public class ReadWriteXL
{
 public static void main(String[] args) throws InvalidFormatException, IOException{

System.out.println("Write data to an Excel Sheet");
FileOutputStream fos=new FileOutputStream("D:/temp/1.xlsx");
HSSFWorkbook workBook = new HSSFWorkbook();
HSSFSheet spreadSheet = workBook.createSheet("email");
HSSFRow row;
HSSFCell cell;
for(int i=0;i<arr.size();i++){
row = spreadSheet.createRow((short) i);
cell = row.createCell(i);

cell.setCellValue("string value added");
}

workBook.write(fos);

}
}}

Upvotes: 1

kinkajou
kinkajou

Reputation: 3728

Apache POI Dependency and Component . You might be missing:

For poi-ooxml you need it's dependencies

  1. poi,
  2. poi-ooxml-schemas
  3. dom4j
  4. poi-ooxml-version-yyyymmdd.jar

Although Not related to your question try to search for stacktrace:

Caused by: java.lang.ClassNotFoundException: org.apache.poi.ss.usermodel.Workbook

This will help you in long run.

Upvotes: 1

aceminer
aceminer

Reputation: 4295

I think you would need to download the binary distribution from http://poi.apache.org/download.html

Add the jars into your libraries and it should resolve the error

Be sure to add all the jars not just the poi-ooxml

Upvotes: 0

Related Questions