2017-10-02 146 views
0

Apache POI를 사용하여 xls 파일의 차트에서 실제 시리즈 데이터와 값을 추출하고 싶습니다. Point 아래 그림과 같이 쌍 (15.44956728, 7)과 같은 값. 필자는 차트의 제목을 추출 할 수는 있었지만 필요한 데이터로는 수행 할 수 없었습니다.Excel에서 차트 값 읽기 Apache POI를 사용하는 차트 데이터 시리즈 HSSF

import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.InputStream; 

import org.apache.poi.hssf.extractor.ExcelExtractor; 
import org.apache.poi.hssf.usermodel.HSSFChart; 
import org.apache.poi.hssf.usermodel.HSSFPatriarch; 
import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.poi.poifs.filesystem.POIFSFileSystem; 
import org.apache.poi.ss.usermodel.Sheet; 
import org.apache.poi.xssf.usermodel.XSSFSheet; 
import org.apache.poi.xssf.usermodel.XSSFWorkbook; 

public class test { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     //System.out.println("Hello, World"); 
     InputStream inp; 
     try { 
      inp = new FileInputStream("USRAK_00017_0.xls"); 
      HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(inp)); 
      ExcelExtractor extractor = new ExcelExtractor(wb); 
      extractor.setFormulasNotResults(true); 
      extractor.setIncludeSheetNames(true); 
      String text = extractor.getText(); 
      //System.out.println(text); 
      HSSFSheet sheet = wb.getSheetAt(0); 
      HSSFChart[] sheetCharts = HSSFChart.getSheetCharts(sheet); 
      System.out.println(sheetCharts[0].getSeries()[0].getSeriesTitle()); 

     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

enter image description here

+1

당신이'시도 않았다 차트에서 추출 할 부분을 구문 분석 할 수 sheetCharts [0] .getSeries() [0] .getDataValues'? – XtremeBaumer

+0

@XtremeBaumer 이것이 LinkedDataRecord를 반환합니다. –

+1

예, 값이 시트 데이터에서 오는 경우 [LinkedDataRecord.getFormulaOfLink] (https://poi.apache.org/apidocs/org/apache/poi/hssf/record/chart/LinkedDataRecord .html # getFormulaOfLink--)는 [Area3DPtg] (https://poi.apache.org/apidocs/org/apache/poi/ss/formula/ptg/Area3DPtg.html) 배열을 제공합니다. 이것은 내가 더 보일 곳입니다. –

답변

0

내가 찾은 더 나은 방법이 FODS 형식의 XML 내용에 XLS 파일을 덤프하는 것입니다 : 여기 내 코드입니다. 오픈 오피스는 다음과 같은 명령을 통해이 작업을 수행 할 수 있습니다

soffice --headless --convert-to fods USRAK_00017_0.xls 

는 그런 다음 XML 당신이 원하는 방식을 분석하고