자바(Java)

[java] 자바 엑셀 쓰기 Apache POI 사용 xlsx

xemaker 2020. 8. 26. 10:49

이전글에서 HSSFWorkbook -> XSSFWorkbook 이런식으로 H가 붙은것을 X로 바꿔주면 된다.

그랬더니

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException
	at bbc.Excel.main(Excel.java:15)
Caused by: java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlException
	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)
	... 1 more

 

이런 에러가 났다. 다운받은 poi 디렉토리에서 poi-4.1.2\ooxml-lib 안에 있는 jar들도 이클립스 build path 에 추가해줘야 했다.

아마 xmlbeans-3.1.0.jar 이 파일이 없어서 오류가 난듯.

그래서 build path 추가 하고 다시 실행하였더니 성공

package bbc;

import java.io.FileOutputStream;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Excel {

	public static void main(String[] args) {
		
		@SuppressWarnings("resource")
		XSSFWorkbook workbook = new XSSFWorkbook();
		XSSFSheet sheet = workbook.createSheet("bbc");
		XSSFRow row = sheet.createRow(0);
		XSSFCell cell = row.createCell(0);
		cell.setCellValue("테스트");
		try {
			FileOutputStream fos = new FileOutputStream("bbc.xlsx");
			workbook.write(fos);
			fos.close();
			System.out.println("성공");
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
}