java를 사용하여 Excel 및 그래프 그래프에서 데이터를 읽으려고합니다.데이터를 Excel에서 읽는 방법 및 Java 또는 Groovy를 사용하여 그래프 만들기
나는 아래의 오류가 계속 :
org.apache.poi.poifs.filesystem.OfficeXmlFileException: The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF)
Exception in thread "main" java.lang.NoClassDefFoundError: org/jfree/util/PublicCloneable
내 코드 :
import java.io.*;
import java.util.*;
import org.jfree.data.*;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.plot.PlotOrientation;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.jfree.data.category.DefaultCategoryDataset;
public class ReadExcel{
public static void main(String[]args){
short a=0;
short b=1;
int i=0;
ArrayList<Integer> list1=new ArrayList<Integer>();
ArrayList<Integer> list2=new ArrayList<Integer>();
int x=0, y=0;
String filename ="C:\\Chart.xlsx";
if(filename != null && !filename.equals("")){
try{
FileInputStream fs =new FileInputStream(filename);
HSSFWorkbook wb = new HSSFWorkbook(fs);
for(int k = 0; k < wb.getNumberOfSheets(); k++){
int j=i+1;
HSSFSheet sheet = wb.getSheetAt(k);
int rows = sheet.getPhysicalNumberOfRows();
for(int r = 1; r < rows; r++){
HSSFRow row = sheet.getRow(r);
int cells = row.getPhysicalNumberOfCells();
HSSFCell cell1 = row.getCell(a);
x =(int) cell1.getNumericCellValue();
HSSFCell cell2 = row.getCell(b);
y =(int) cell2.getNumericCellValue();
list1.add(new Integer(x));
list2.add(new Integer(y));
}
i++;
}
}catch(Exception e){
System.out.println(e);
}
}
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for(int j=0;j<list1.size();j++){
dataset.setValue((double)list2.get(j), "Marks", list1.get(j).toString());
}
JFreeChart chart = ChartFactory.createBarChart("BarChart using JFreeChart","ID", "Marks", dataset,
PlotOrientation.VERTICAL, false,true, false);
try {
ChartUtilities.saveChartAsJPEG(new File("C:\\chart.jpg"), chart,400, 300);
} catch (IOException e) {
System.out.println("Problem in creating chart.");
}
}
}
샘플 엑셀 :
Response Time Transaction Name Runid
25 Home 1
56 Login 2
23 Order 3
내가 XSSF 아파치 POI하지만 행운을 사용하려고했습니다.
차트의 이미지를 로컬 어딘가에 저장하고 싶었습니다.
나는 이것을 시도했습니다. 계속 동일한 오류가 발생합니다. org.apache.poi.poifs.filesystem.OfficeXmlFileException : 제공된 데이터가 Office 2007 이상의 XML에있는 것 같습니다. OLE2 Office Documents를 다루는 POI 부분을 호출하고 있습니다. 이 데이터를 처리하려면 POI의 다른 부분 (예 : HSSF 대신 XSSF) – syndy1989
@ syndy1989를 호출해야합니다.이 오류는 명확합니다. 아파치 포이는 엑셀 파일 (xls와 xlsx)을 다루기 위해 2 가지 다른 라이브러리 (HSSF 과 XSSF)를 가지고있다. 엑셀 버전이> 2007이면 XSSF를 사용해야합니다. "HSSF는 POI 프로젝트의 순수 Java 구현 인 Excel '97 (-2007) 파일 형식입니다 .XSSF는 POI 프로젝트의 순수 Java 구현 인 Excel 2007 OOXML (.xlsx) 파일 형식입니다." –