{"id":352,"date":"2025-09-19T01:47:14","date_gmt":"2025-09-19T01:47:14","guid":{"rendered":"https:\/\/iotnoob.com\/wordpress\/?p=352"},"modified":"2025-09-19T01:47:15","modified_gmt":"2025-09-19T01:47:15","slug":"apache-poi-ooxml-fat-jar-deploy-issue","status":"publish","type":"post","link":"https:\/\/iotnoob.com\/wordpress\/2025\/09\/19\/apache-poi-ooxml-fat-jar-deploy-issue\/","title":{"rendered":"Apache POI OOXML &#8211; Fat-Jar deploy issue"},"content":{"rendered":"\n<p class=\"has-black-color has-text-color has-link-color wp-elements-0ac5381e3dfc2a8be02e0699c8ebbecd\">\u0e40\u0e27\u0e25\u0e32\u0e17\u0e33\u0e07\u0e32\u0e19\u0e1a\u0e19 Netbeans \u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e2d\u0e30\u0e44\u0e23 \u0e41\u0e15\u0e48\u0e15\u0e2d\u0e19 compile \u0e40\u0e1b\u0e47\u0e19 Fat-Jar \u0e01\u0e25\u0e31\u0e1a\u0e40\u0e01\u0e34\u0e14\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07<br>\u0e40\u0e27\u0e25\u0e32\u0e17\u0e33\u0e07\u0e32\u0e19\u0e41\u0e25\u0e49\u0e27\u0e40\u0e08\u0e2d Error<br><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">Your InputStream was neither an OLE2 stream, nor an OOXML stream or you haven&#8217;t provide the poi-ooxml*.jar in the classpath\/modulepath &#8211; FileMagic: OLE2, having providers: [org.apache.poi.xssf.usermodel.XSSFWorkbookFactory@6239637c]<\/mark><\/p>\n\n\n\n<p>\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e19\u0e35\u0e49 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e21\u0e35\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49 WorkbookFactory<br>\u0e41\u0e15\u0e48 WorkbookFactory \u0e21\u0e31\u0e19\u0e01\u0e47\u0e19\u0e48\u0e32\u0e43\u0e0a\u0e49 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e21\u0e31\u0e19\u0e0a\u0e48\u0e27\u0e22\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e31\u0e49\u0e07 XLS \u0e41\u0e25\u0e30 XLSX \u0e44\u0e14\u0e49\u0e42\u0e14\u0e22\u0e40\u0e23\u0e32\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e02\u0e35\u0e22\u0e19 code 2 \u0e23\u0e2d\u0e1a<\/p>\n\n\n\n<p><strong>OLE2<\/strong>: \u0e04\u0e37\u0e2d\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e02\u0e2d\u0e07\u0e44\u0e1f\u0e25\u0e4c Microsoft Office \u0e23\u0e38\u0e48\u0e19\u0e40\u0e01\u0e48\u0e32 (Excel 97-2003) \u0e0b\u0e36\u0e48\u0e07\u0e01\u0e47\u0e04\u0e37\u0e2d\u0e44\u0e1f\u0e25\u0e4c\u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25 <strong>.xls<\/strong><br><strong>OOXML<\/strong>: \u0e04\u0e37\u0e2d\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e02\u0e2d\u0e07\u0e44\u0e1f\u0e25\u0e4c Microsoft Office \u0e23\u0e38\u0e48\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e46 (Excel 2007 \u0e02\u0e36\u0e49\u0e19\u0e44\u0e1b) \u0e0b\u0e36\u0e48\u0e07\u0e01\u0e47\u0e04\u0e37\u0e2d\u0e44\u0e1f\u0e25\u0e4c\u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25 <strong>.xlsx<\/strong><\/p>\n\n\n\n<p>Apache POI \u0e41\u0e22\u0e01 library \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e2d\u0e48\u0e32\u0e19\u0e44\u0e1f\u0e25\u0e4c <code>.xls<\/code> \u0e41\u0e25\u0e30 <code>.xlsx<\/code> \u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e01\u0e31\u0e19<br>\u0e43\u0e19\u0e01\u0e32\u0e23\u0e2d\u0e48\u0e32\u0e19\u0e44\u0e1f\u0e25\u0e4c <strong>.xlsx (OOXML)<\/strong> \u0e15\u0e49\u0e2d\u0e07\u0e43\u0e0a\u0e49 <strong><code>poi-ooxml-*.jar<\/code><\/strong><br>\u0e43\u0e19\u0e01\u0e32\u0e23\u0e2d\u0e48\u0e32\u0e19\u0e44\u0e1f\u0e25\u0e4c <strong>.xls (OLE2)<\/strong> \u0e15\u0e49\u0e2d\u0e07\u0e43\u0e0a\u0e49 <strong><code>poi-*.jar<\/code><\/strong><\/p>\n\n\n\n<p>\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21 <code>FileMagic: OLE2<\/code> \u0e17\u0e35\u0e48\u0e41\u0e2a\u0e14\u0e07\u0e02\u0e36\u0e49\u0e19\u0e21\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e31\u0e27\u0e1a\u0e48\u0e07\u0e0a\u0e35\u0e49\u0e17\u0e35\u0e48\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e27\u0e48\u0e32 <strong>Apache POI \u0e15\u0e23\u0e27\u0e08\u0e1e\u0e1a\u0e27\u0e48\u0e32\u0e44\u0e1f\u0e25\u0e4c\u0e19\u0e35\u0e49\u0e19\u0e48\u0e32\u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e44\u0e1f\u0e25\u0e4c Excel .xls (\u0e23\u0e38\u0e48\u0e19\u0e40\u0e01\u0e48\u0e32)<\/strong> \u0e41\u0e15\u0e48\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e2d\u0e48\u0e32\u0e19\u0e42\u0e04\u0e23\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e20\u0e32\u0e22\u0e43\u0e19\u0e44\u0e1f\u0e25\u0e4c\u0e44\u0e14\u0e49\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 \u0e08\u0e36\u0e07\u0e40\u0e01\u0e34\u0e14 error \u0e02\u0e36\u0e49\u0e19<\/p>\n\n\n\n<p>\u0e41\u0e15\u0e48\u0e15\u0e2d\u0e19 deploy \u0e40\u0e1b\u0e47\u0e19 Fat-Jar \u0e14\u0e31\u0e19\u0e40\u0e01\u0e34\u0e14\u0e1b\u0e31\u0e0d\u0e2b\u0e32 \u0e0b\u0e36\u0e48\u0e07 AI \u0e27\u0e34\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c\u0e27\u0e48\u0e32\u0e19\u0e48\u0e32\u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e1e\u0e23\u0e32\u0e30\u0e01\u0e32\u0e23\u0e17\u0e33 package \u0e21\u0e31\u0e19\u0e40\u0e08\u0e2d services \u0e17\u0e35\u0e48\u0e0b\u0e49\u0e33\u0e0b\u0e49\u0e2d\u0e19\u0e01\u0e31\u0e19 \u0e41\u0e25\u0e49\u0e27\u0e21\u0e31\u0e19\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e21\u0e32\u0e41\u0e04\u0e48\u0e2d\u0e31\u0e19\u0e40\u0e14\u0e35\u0e22\u0e27<\/p>\n\n\n\n<p>\u0e01\u0e48\u0e2d\u0e19\u0e2d\u0e37\u0e48\u0e19 \u0e22\u0e31\u0e07\u0e07\u0e31\u0e22\u0e01\u0e47\u0e15\u0e49\u0e2d\u0e07\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e27\u0e48\u0e32 \u0e44\u0e1f\u0e25\u0e4c Apache POI \/ OOXML \u0e16\u0e39\u0e01\u0e23\u0e27\u0e21\u0e44\u0e27\u0e49\u0e43\u0e19 Fat-Jar \u0e41\u0e25\u0e49\u0e27\u0e2b\u0e23\u0e37\u0e2d\u0e22\u0e31\u0e07<br>\u0e19\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e19\u0e31\u0e49\u0e19\u0e01\u0e47\u0e25\u0e2d\u0e07\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e27\u0e48\u0e32\u0e44\u0e1f\u0e25\u0e4c XML \u0e21\u0e35\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48<br>\u0e17\u0e33\u0e07\u0e32\u0e19\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e17\u0e31\u0e49\u0e07 XLS \u0e41\u0e25\u0e30 XLSX \u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e1b\u0e25\u0e48\u0e32<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">## \u0e2a\u0e32\u0e40\u0e2b\u0e15\u0e38\u0e17\u0e35\u0e48\u0e41\u0e17\u0e49\u0e08\u0e23\u0e34\u0e07: \u0e01\u0e32\u0e23\u0e23\u0e27\u0e21\u0e44\u0e1f\u0e25\u0e4c <code>META-INF\/services<\/code> \u0e17\u0e31\u0e1a\u0e01\u0e31\u0e19<\/h3>\n\n\n\n<p>\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e07\u0e48\u0e32\u0e22\u0e46 \u0e04\u0e37\u0e2d:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0e17\u0e31\u0e49\u0e07 <code>poi.jar<\/code> (\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a .xls) \u0e41\u0e25\u0e30 <code>poi-ooxml.jar<\/code> (\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a .xlsx) \u0e15\u0e48\u0e32\u0e07\u0e01\u0e47\u0e21\u0e35\u0e44\u0e1f\u0e25\u0e4c\u0e1e\u0e34\u0e40\u0e28\u0e29\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a &#8220;\u0e25\u0e07\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19&#8221; \u0e15\u0e31\u0e27\u0e40\u0e2d\u0e07\u0e01\u0e31\u0e1a <code>WorkbookFactory<\/code> \u0e44\u0e1f\u0e25\u0e4c\u0e19\u0e35\u0e49\u0e08\u0e30\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19 <code>META-INF\/services\/<\/code><\/li>\n\n\n\n<li>\u0e40\u0e21\u0e37\u0e48\u0e2d Gradle Shadow Plugin \u0e2a\u0e23\u0e49\u0e32\u0e07 Fat JAR \u0e21\u0e31\u0e19\u0e08\u0e30\u0e40\u0e08\u0e2d\u0e1f\u10d0\u30a4\u30eb\u0e0a\u0e37\u0e48\u0e2d\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19\u0e08\u0e32\u0e01 2 \u0e17\u0e35\u0e48\u0e19\u0e35\u0e49<\/li>\n\n\n\n<li><strong>\u0e42\u0e14\u0e22\u0e1b\u0e01\u0e15\u0e34\u0e41\u0e25\u0e49\u0e27 \u0e21\u0e31\u0e19\u0e08\u0e30\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e40\u0e2d\u0e32\u0e21\u0e32\u0e41\u0e04\u0e48\u0e44\u0e1f\u0e25\u0e4c\u0e40\u0e14\u0e35\u0e22\u0e27 \u0e41\u0e25\u0e30\u0e17\u0e34\u0e49\u0e07\u0e2d\u0e35\u0e01\u0e44\u0e1f\u0e25\u0e4c\u0e44\u0e1b!<\/strong><\/li>\n<\/ul>\n\n\n\n<p>\u0e1c\u0e25\u0e01\u0e47\u0e04\u0e37\u0e2d Fat JAR \u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e21\u0e35\u0e04\u0e25\u0e32\u0e2a\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a .xls \u0e41\u0e25\u0e30 .xlsx \u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19 <strong>\u0e41\u0e15\u0e48\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19 (Service file) \u0e21\u0e35\u0e41\u0e04\u0e48\u0e02\u0e2d\u0e07 .xlsx \u0e2d\u0e31\u0e19\u0e40\u0e14\u0e35\u0e22\u0e27<\/strong> \u0e17\u0e33\u0e43\u0e2b\u0e49 <code>WorkbookFactory<\/code> \u0e23\u0e39\u0e49\u0e08\u0e31\u0e01\u0e41\u0e15\u0e48\u0e27\u0e34\u0e18\u0e35\u0e40\u0e1b\u0e34\u0e14 <code>.xlsx<\/code> \u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e0b\u0e36\u0e48\u0e07\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a Error \u0e17\u0e35\u0e48\u0e1f\u0e49\u0e2d\u0e07\u0e27\u0e48\u0e32 <code>having providers: [XSSF...]<\/code> \u0e40\u0e1b\u0e4a\u0e30\u0e46 \u0e40\u0e25\u0e22\u0e04\u0e23\u0e31\u0e1a<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">## \u0e27\u0e34\u0e18\u0e35\u0e41\u0e01\u0e49\u0e44\u0e02\u0e43\u0e19 Gradle (<code>build.gradle<\/code>)<\/h3>\n\n\n\n<p>\u0e40\u0e23\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e2a\u0e31\u0e48\u0e07\u0e43\u0e2b\u0e49 Shadow Plugin <strong>&#8220;\u0e23\u0e27\u0e21&#8221;<\/strong> (Merge) \u0e40\u0e19\u0e37\u0e49\u0e2d\u0e2b\u0e32\u0e02\u0e2d\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19\u0e19\u0e35\u0e49\u0e40\u0e02\u0e49\u0e32\u0e14\u0e49\u0e27\u0e22\u0e01\u0e31\u0e19 \u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e21\u0e32\u0e41\u0e04\u0e48\u0e2d\u0e31\u0e19\u0e40\u0e14\u0e35\u0e22\u0e27<\/p>\n\n\n\n<p>\u0e43\u0e2b\u0e49\u0e04\u0e38\u0e13\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a <code>shadowJar<\/code> task \u0e43\u0e19\u0e44\u0e1f\u0e25\u0e4c <code>build.gradle<\/code> \u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e14\u0e31\u0e07\u0e19\u0e35\u0e49\u0e04\u0e23\u0e31\u0e1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"groovy\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ ... \u0e2a\u0e48\u0e27\u0e19 plugins \u0e41\u0e25\u0e30 dependencies \u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13 ...\n\n\/\/ \u0e40\u0e1e\u0e34\u0e48\u0e21 task \u0e19\u0e35\u0e49\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b \u0e2b\u0e23\u0e37\u0e2d\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e2d\u0e07\u0e40\u0e14\u0e34\u0e21\u0e16\u0e49\u0e32\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27\nshadowJar {\n    \/\/ \u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e19\u0e35\u0e49\u0e04\u0e37\u0e2d\u0e1e\u0e23\u0e30\u0e40\u0e2d\u0e01\u0e02\u0e2d\u0e07\u0e07\u0e32\u0e19\u0e04\u0e23\u0e31\u0e1a\n    mergeServiceFiles()\n    \n    \/\/ \u0e16\u0e49\u0e32\u0e04\u0e38\u0e13\u0e21\u0e35\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e2d\u0e37\u0e48\u0e19\u0e46 \u0e01\u0e47\u0e43\u0e2a\u0e48\u0e44\u0e27\u0e49\u0e15\u0e32\u0e21\u0e40\u0e14\u0e34\u0e21\n    archiveBaseName = 'polar_gce'\n    archiveClassifier = 'all'\n    archiveVersion = '1.0'\n}\n\n\/\/ \u0e16\u0e49\u0e32\u0e04\u0e38\u0e13\u0e43\u0e0a\u0e49 application plugin \u0e43\u0e2b\u0e49\u0e41\u0e19\u0e48\u0e43\u0e08\u0e27\u0e48\u0e32\u0e44\u0e14\u0e49\u0e01\u0e33\u0e2b\u0e19\u0e14 main class \u0e44\u0e27\u0e49\napplication {\n    mainClass = 'com.ncs2polar.app.SpeedStackTableFrame'\n}<\/pre>\n\n\n\n<p><strong>\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e17\u0e33:<\/strong><\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>\u0e19\u0e33 <code>shadowJar { mergeServiceFiles() }<\/code> \u0e44\u0e1b\u0e43\u0e2a\u0e48\u0e43\u0e19 <code>build.gradle<\/code><\/li>\n\n\n\n<li>\u0e23\u0e31\u0e19\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 build \u0e43\u0e2b\u0e21\u0e48\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07: <code>.\/gradlew clean shadowJar<\/code><\/li>\n\n\n\n<li>\u0e19\u0e33\u0e44\u0e1f\u0e25\u0e4c JAR \u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e08\u0e32\u0e01 <code>build\/libs<\/code> \u0e44\u0e1b\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07<\/li>\n<\/ol>\n\n\n\n<p>\u0e01\u0e32\u0e23 MergeServiceFiles \u0e0a\u0e48\u0e27\u0e22\u0e41\u0e01\u0e49\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e44\u0e14\u0e49\u0e08\u0e23\u0e34\u0e07<\/p>\n\n\n\n<p>\u0e41\u0e15\u0e48 AI \u0e22\u0e31\u0e07\u0e41\u0e19\u0e30\u0e19\u0e33\u0e27\u0e34\u0e18\u0e35\u0e17\u0e35\u0e48 2 \u0e43\u0e2b\u0e49 \u0e0b\u0e36\u0e48\u0e07\u0e01\u0e47\u0e19\u0e48\u0e32\u0e08\u0e30\u0e0a\u0e48\u0e27\u0e22\u0e41\u0e2b\u0e25\u0e48\u0e30 \u0e41\u0e15\u0e48\u0e21\u0e31\u0e19\u0e14\u0e39\u0e44\u0e21\u0e48\u0e2a\u0e30\u0e14\u0e27\u0e01 \u0e04\u0e37\u0e2d \u0e01\u0e32\u0e23\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e49 WorkbookFactory<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">## \u0e16\u0e49\u0e32\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49: \u0e25\u0e2d\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07 Workbook \u0e42\u0e14\u0e22\u0e15\u0e23\u0e07 (\u0e27\u0e34\u0e18\u0e35\u0e2a\u0e33\u0e23\u0e2d\u0e07)<\/h3>\n\n\n\n<p>\u0e2b\u0e32\u0e01\u0e27\u0e34\u0e18\u0e35\u0e02\u0e49\u0e32\u0e07\u0e1a\u0e19\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e1c\u0e25 (\u0e0b\u0e36\u0e48\u0e07\u0e44\u0e21\u0e48\u0e19\u0e48\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e44\u0e1b\u0e44\u0e14\u0e49) \u0e43\u0e2b\u0e49\u0e25\u0e2d\u0e07\u0e43\u0e0a\u0e49\u0e27\u0e34\u0e18\u0e35\u0e2a\u0e38\u0e14\u0e17\u0e49\u0e32\u0e22\u0e04\u0e37\u0e2d\u0e40\u0e25\u0e34\u0e01\u0e43\u0e0a\u0e49 <code>WorkbookFactory<\/code> \u0e41\u0e25\u0e49\u0e27\u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e04\u0e49\u0e14\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2a\u0e23\u0e49\u0e32\u0e07 Workbook \u0e40\u0e2d\u0e07\u0e42\u0e14\u0e22\u0e15\u0e23\u0e07 \u0e27\u0e34\u0e18\u0e35\u0e19\u0e35\u0e49\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e17\u0e35\u0e48\u0e1b\u0e25\u0e32\u0e22\u0e40\u0e2b\u0e15\u0e38 \u0e41\u0e15\u0e48\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e42\u0e1b\u0e23\u0e41\u0e01\u0e23\u0e21\u0e17\u0e33\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49\u0e41\u0e19\u0e48\u0e19\u0e2d\u0e19<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import org.apache.poi.ss.usermodel.Workbook;\nimport org.apache.poi.hssf.usermodel.HSSFWorkbook; \/\/ for .xls\nimport org.apache.poi.xssf.usermodel.XSSFWorkbook; \/\/ for .xlsx\nimport java.io.FileInputStream;\nimport java.io.InputStream;\n\n\/\/ ...\n\nString filePath = \"path\/to\/your\/file.xls\";\nWorkbook workbook = null;\nInputStream inputStream = new FileInputStream(filePath);\n\ntry {\n    if (filePath.toLowerCase().endsWith(\".xls\")) {\n        \/\/ \u0e2a\u0e23\u0e49\u0e32\u0e07 Workbook \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a .xls \u0e42\u0e14\u0e22\u0e15\u0e23\u0e07\n        workbook = new HSSFWorkbook(inputStream);\n    } else if (filePath.toLowerCase().endsWith(\".xlsx\")) {\n        \/\/ \u0e2a\u0e23\u0e49\u0e32\u0e07 Workbook \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a .xlsx \u0e42\u0e14\u0e22\u0e15\u0e23\u0e07\n        workbook = new XSSFWorkbook(inputStream);\n    } else {\n        throw new IllegalArgumentException(\"Invalid file extension. Only .xls and .xlsx are supported.\");\n    }\n\n    \/\/ ... \u0e17\u0e33\u0e07\u0e32\u0e19\u0e01\u0e31\u0e1a workbook \u0e15\u0e48\u0e2d\u0e44\u0e1b ...\n\n} finally {\n    if (workbook != null) {\n        workbook.close();\n    }\n    inputStream.close();\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u0e40\u0e27\u0e25\u0e32\u0e17\u0e33\u0e07\u0e32\u0e19\u0e1a\u0e19 Netbeans \u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e2d\u0e30\u0e44\u0e23 \u0e41\u0e15\u0e48\u0e15\u0e2d\u0e19 compile \u0e40\u0e1b\u0e47\u0e19 Fat-Jar \u0e01\u0e25\u0e31\u0e1a\u0e40\u0e01\u0e34\u0e14\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e40\u0e27\u0e25\u0e32\u0e17\u0e33\u0e07\u0e32\u0e19\u0e41\u0e25\u0e49\u0e27\u0e40\u0e08\u0e2d ErrorYour InputStream was neither an OLE2 stream,&hellip;<\/p>\n","protected":false},"author":1,"featured_media":343,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,2],"tags":[],"class_list":["post-352","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","category-programming"],"_links":{"self":[{"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/posts\/352","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/comments?post=352"}],"version-history":[{"count":1,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/posts\/352\/revisions"}],"predecessor-version":[{"id":353,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/posts\/352\/revisions\/353"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/media\/343"}],"wp:attachment":[{"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/media?parent=352"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/categories?post=352"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/tags?post=352"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}