만 바이너리 사무실 용으로 설계되어 사용하는 클래스, 즉 오피스 97-2003을 파일 :
<!--- where the poi files are --->
<cfset jarpath = expandPath("./jars")>
<cfset paths = []>
<cfdirectory action="list" name="files" directory="#jarpath#" filter="*.jar" recurse="true">
<cfloop query="files">
<cfset arrayAppend(paths, directory & "/" & name)>
</cfloop>
<!--- load javaloader --->
<cfset variables.loader = createObject("component", "javaloader.JavaLoader").init(paths)>
<!--- generic file reader doohicky --->
<cfset myfile = createObject("java","java.io.FileInputStream")>
<!--- get our required things loaded --->
<!--- Word --->
<cfset doc = loader.create("org.apache.poi.hwpf.HWPFDocument")>
<cfset wordext = loader.create("org.apache.poi.hwpf.extractor.WordExtractor")>
<!--- Excel --->
<cfset excel = loader.create("org.apache.poi.hssf.usermodel.HSSFWorkbook")>
<cfset xlsext = loader.create("org.apache.poi.hssf.extractor.ExcelExtractor")>
<!--- Powerpoint --->
<cfset ppt = loader.create("org.apache.poi.hslf.HSLFSlideShow")>
<cfset pptext = loader.create("org.apache.poi.hslf.extractor.PowerPointExtractor")>
<!--- get files --->
<cfset filePath = expandPath("./testdocs")>
<cfdirectory action="list" name="files" directory="#filePath#">
<cfoutput query="files">
<cfset theFile = filePath & "/" & name>
<cfset myfile.init(theFile)>
Reading: #theFile#<br/>
<cfswitch expression="#listLast(name,".")#">
<cfcase value="doc,docx">
<cfset finalfile = Replace(theFile, listLast(name,"."), "doc")>
<cfset doc = doc.init(finalfile)>
<cfset wordext.init(doc)>
<cfoutput>
<pre>
#wordext.getText()#
</pre>
</cfoutput>
</cfcase>
<cfcase value="xls,xlsx">
<cfset finalfile = Replace(theFile, listLast(name,"."), "xls")>
<cfset excel = excel.init(finalfile)>
<cfset xlsext = xlsext.init(excel)>
<cfoutput>
<pre>
#xlsext.getText()#
</pre>
</cfoutput>
</cfcase>
<cfcase value="ppt,pptx">
<cfset finalfile = Replace(theFile, listLast(name,"."), "ppt")>
<cfset ppt = ppt.init(finalfile)>
<cfset pptext = pptext.init(ppt)>
<cfoutput>
<pre>
#pptext.getText(true,true)#
</pre>
</cfoutput>
</cfcase>
</cfswitch>
<p><hr/></p>
</cfoutput>
다음은 간단한 오류의 설명이다. 파일 형식을 실제로 변경하지 않기 때문에 파일 확장명을 변경하면 작동하지 않습니다. 그들은 여전히 내부적으로 ooxml 파일입니다.
다른 파일 형식 (및 이진 형식과 ooxml 형식 모두)에서 텍스트를 추출하려면 ExtractorFactory
을 사용하십시오. 지정된 파일에 대해 올바른 추출기를 자동으로 결정합니다 (지원되는 경우). 게시 한 링크의 끝에 how to use the ExtractorFactory을 보여주는 또 다른 항목이 있습니다.
NB :
다음은 간단한 오류의 설명은 다음과 같습니다 :이 OOXML POI jars
....
loader = createObject("component", "javaloader.JavaLoader").init(paths);
extractorFactory = loader.create("org.apache.poi.extractor.ExtractorFactory");
pathToFile = "c:/path/to/someFile.xlsx";
myfile = createObject("java","java.io.File").init(pathToFile);
extractor = extractorFactory.createExtractor(myFile);
WriteDump(extractor.getText());
편집 필요 자바 객체를 사용하는 경우,
사이드 메모를, 오류 메시지 텍스트는 일반적으로 어떻게 당신이 상용구 메시지. 스택 추적을보고 오류의 "원인"을 확인해야합니다.
''(https://wikidocs.adobe.com/wiki/display/coldfusionen/cfpresentation)을 사용해 보셨습니까? –
가장 최근의 POI가 맞습니까? –