La scène réapparaît
Apache poi
Linux
Matou
Comme indiqué ci-dessus, dans l'environnement Linux + Tomcat, une erreur de "aucun fichier ou répertoire" ne sera signalée lors de l'utilisation d'Apache POI pour exporter Excel.
message d'erreur
java.lang.runtimeException: java.io.ioException: aucun fichier ou répertoire de ce type sur org.apache.poi.xssf.streaming.sxssfworkbook.createAndregistersxssfsheet (sxssfworkbook.java:569) at org.apache.poi.xssf.streaming.sxssfworkbook.createSheet (sxssfworkbook.java:558) sur com.app.util.excelioutil.write (excelioutil.java:46) à Sun.reflect.NativeMethodAccessOrimpl.invoke0 (méthode native) à Sun.reflect.NativeMethodAccessOrimp.invoke (NativeMethodAccessOrimp.Java:39) à Sun.Reflect.delegatingMethodAccessOrimp.invoke (DelegatingMethodAccessorIml java.lang.reflect.method.invoke (méthode.java:597) sur com.mvc.invoke.actioninvoker.invoke (actioninvoker.java:75) à com.mvc.mvcdispatcher.service (mvcdispatcher.java:119) com.mvc.mvcfilter.dofilter (mvcfilter.java:67) à org.apache.catalina.core.applicationfilterchain.internaldofilter (applicationfilterchain.java:243) à l'affaire org.apache.catalina.core.applicationfilterchain.dofilter (applicationFilterChain.java:210) sur org.apache.catalina.core.standardwrappervalve.invoke (standardwrappervalve.java:222) à l'adresse org.apache.catalina.core.standardContextValve.invoke (standardContextValve.java:123) sur org.apache.catalina.authenticator.authenticatorbase.invoke (AuthenticatorBase.java:502) at org.apache.catalina.core.standardhostvalve.invoke (standardhostvalve.java:171) à org.apache.catalina.valves.errorReportValve.invoke (errorReportValve.java:99) chez org.apache.catalina.valves.accesslogvalve.invoke (AccessLogValve.java:953) sur org.apache.catalina.core.standardEngineValve.invoke (standardEnginevalve.java:118) à la org.apache.catalina.connector.coyoteadapter.service (coyoteadapter.java:408) sur org.apache.coyote.http11.abstracthttp11processor.process (abstrthttp11processor.java:1023) org.apache.coyote.abstractProtoCol $ abstractConnectionHandler.process (abstractProtocol.java:589) sur org.apache.tomcat.util.net.aprendpoint $ socketwithoptionsprocessor.run (aprendpoint.java:1810) attwithoptionsprocessor.run (ArendPoint.java:1810) 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(Thread.java:662)
Solution
Parlons d'abord de la solution, car la solution est très simple, il vous suffit de créer un dossier «température» dans le répertoire racine de Tomcat.
Cause d'erreur
La raison de cette erreur est que POI exporte l'Excel exporté vers le répertoire temporaire du système par défaut. À cette époque, le dossier temporaire n'existait pas sous le Tomcat de Linux, donc le répertoire ne peut être trouvé. En fait, quel que soit l'environnement système dans lequel il se trouve, tant que le répertoire racine Tomcat n'a pas de température. Regardez simplement le code source du POI ci-dessous et vous comprendrez.
public void write (stream de sortie) lève ioException {for (sxssfsheet sheet: _xfromsxhash.values ()) {sheet.flushrows (); } // Enregistrer dans le fichier de répertoire temporaire tmplFile = file.createTempFile ("poi-Sxssf-Template", ".xlsx"); tmpplfile.deleteExit (); FileOutputStream OS = new FileOutputStream (tmpplFile); _wb.write (OS); os.close (); // Remplacez les entrées de modèle par les fichiers de données de feuille générés injectData (TMPLFile, Stream); tmpplfile.delete (); } Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.