シーンが再び現れます
アパッチ・ポイ
Linux
トムキャット
上記のように、Linux+Tomcat環境では、Apache POIを使用してExcelをエクスポートすると、「そのようなファイルまたはディレクトリなし」の誤差が報告されます。
エラーメッセージ
java.lang.runtimeexception:java.io.ioexception:org.apache.poi.xssf.streaming.sxsssfworkbook.createandregistersxsssfsheet(sxsssfworkbook.java:569)のorg.apache.poi.xssf.streaming.sxsssfworkbook.createandregistersxsssfsheetのそのようなファイルまたはディレクトリはありません org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheet(SXSSFWorkbook.java:558) at com.app.util.ExcelIOUtil.write(ExcelIOUtil.java:46) at com.app.controllers.DrivingSchoolController.download(DrivingSchoolController.java:106) sun.reflt.nativemethodaccessorimpl.invoke0(ネイティブ方法)sun.reflt.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:39)at sun.reflect.delegatingmethodaccessorimpl.invoke(java:f Java.lang.Reflect.Method.Invoke(Method.java:597)atcom.mvc.invoke.anctioninvoker.invoke(actioninvoker.java:75)at com.mvc.mvcdispatcher.service(mvcdispatcher.java:119)at com.mvc.mvcfilter.dofilter(mvcfilter.java:67)at org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:243)at org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:210)at org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:222)at org.apache.catalina.core.standardcontextvalve.invoke(StandardContextValve.java:123)atorg.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:502)at org.apache.catalina.core.standardhostvalve.invoke(StandardHostvalve.java:171)at org.apache.catalina.valves.errerportvalve.invoke(errorreportvalve.java:99)at org.apache.catalina.valves.accesslogvalve.invoke(accesslogvalve.java:953)at org.apache.catalina.core.standernenginevalve.invoke(StandardEngineValve.java:118)at org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:408)at org.apache.coyote.http11.abstracthttp1p1pessor.process(abstracthtttp11processor.java:1023)at org.apache.coyote.abstractprotocol $ abstractconnectionhandler.process(abstractprotocol.java:589)at org.apache.tomcat.util.net.aprendpoint $ socketwithoptionsprocessor.run(aprendpoint.java:810)at java.util.concurrent.threadpoolexecutor $ worker.runtask(threadpoolexecutor.java:886)at java.util.concurrent.threadpoolexecutor $ worker.run(threadpoolexecutor.java:908)at java.lang.thread.run
解決
ソリューションについては、ソリューションが非常にシンプルであるため、Tomcatのルートディレクトリに「TEMP」フォルダーを作成するだけでよいため、ソリューションについて説明しましょう。
エラーの原因
このエラーの理由は、POIがエクスポートされたExcelをデフォルトでシステムの一時ディレクトリにエクスポートすることです。当時、TempフォルダーはLinuxのTomcatの下に存在していなかったため、ディレクトリは見つかりませんでした。実際、Tomcatルートディレクトリに温度がない限り、どんなシステム環境があっても。以下のPOIのソースコードを見るだけで、理解できます。
public void write(outputstream stream)はioexception {for(sxssfsheetシート:_xfromsxhash.values()){sheet.flushrows(); } //一時ディレクトリに保存file tmplfile = file.createTempfile( "poi-sxssf-template"、 ".xlsx"); tmplfile.deleteonexit(); fileoutputStream os = new fileoutputStream(tmplfile); _wb.write(os); os.close(); //生成されたシートデータファイルにテンプレートのエントリを挿入します(tmplfile、stream); tmplfile.delete(); }上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。