{"id":344,"date":"2025-09-09T11:06:30","date_gmt":"2025-09-09T11:06:30","guid":{"rendered":"https:\/\/iotnoob.com\/wordpress\/?p=344"},"modified":"2025-09-09T11:07:04","modified_gmt":"2025-09-09T11:07:04","slug":"%e0%b9%83%e0%b8%8a%e0%b9%89-apache-poi-%e0%b9%80%e0%b8%82%e0%b8%b5%e0%b8%a2%e0%b8%99%e0%b9%84%e0%b8%9f%e0%b8%a5%e0%b9%8c-xls-xlsx","status":"publish","type":"post","link":"https:\/\/iotnoob.com\/wordpress\/2025\/09\/09\/%e0%b9%83%e0%b8%8a%e0%b9%89-apache-poi-%e0%b9%80%e0%b8%82%e0%b8%b5%e0%b8%a2%e0%b8%99%e0%b9%84%e0%b8%9f%e0%b8%a5%e0%b9%8c-xls-xlsx\/","title":{"rendered":"\u0e43\u0e0a\u0e49 Apache POI \u0e40\u0e02\u0e35\u0e22\u0e19\u0e44\u0e1f\u0e25\u0e4c XLS, XLSX"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u0e43\u0e0a\u0e49 WorkbookFactory \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e17\u0e35\u0e48\u0e40\u0e23\u0e32\u0e08\u0e30\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e33\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49\u0e17\u0e31\u0e49\u0e07 XLS \u0e41\u0e25\u0e30 XLSX<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e30\u0e27\u0e31\u0e07 \u0e04\u0e37\u0e2d \u0e16\u0e49\u0e32 \u0e41\u0e16\u0e27 \u0e2b\u0e23\u0e37\u0e2d cell \u0e17\u0e35\u0e48\u0e40\u0e23\u0e32\u0e08\u0e30\u0e40\u0e02\u0e35\u0e22\u0e19\u0e25\u0e07\u0e44\u0e1b\u0e21\u0e31\u0e19\u0e44\u0e21\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19 range \u0e17\u0e35\u0e48\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e23\u0e32\u0e08\u0e30\u0e40\u0e02\u0e35\u0e22\u0e19\u0e25\u0e07\u0e44\u0e1b\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49<br>\u0e19\u0e31\u0e48\u0e19\u0e04\u0e37\u0e2d \u0e01\u0e48\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e40\u0e02\u0e35\u0e22\u0e19 \u0e40\u0e23\u0e32\u0e15\u0e49\u0e2d\u0e07 get ROW \u0e19\u0e31\u0e49\u0e19\u0e02\u0e36\u0e49\u0e19\u0e21\u0e32 \u0e08\u0e32\u0e01\u0e19\u0e31\u0e49\u0e19 get CELL \u0e19\u0e31\u0e49\u0e19 \u0e02\u0e36\u0e49\u0e19\u0e21\u0e32\u0e14\u0e49\u0e27\u0e22 \u0e16\u0e49\u0e32 ROW \u0e2b\u0e23\u0e37\u0e2d CELL \u0e40\u0e1b\u0e47\u0e19 null<br>\u0e40\u0e23\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07 ROW \u0e2b\u0e23\u0e37\u0e2d CELL \u0e19\u0e31\u0e49\u0e19\u0e02\u0e36\u0e49\u0e19\u0e21\u0e32\u0e01\u0e48\u0e2d\u0e19 \u0e16\u0e36\u0e07\u0e08\u0e30\u0e17\u0e33\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49<\/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.*;\nimport java.io.File;\nimport java.io.FileInputStream;\nimport java.io.FileOutputStream;\nimport java.io.IOException;\nimport java.util.Scanner;\n\npublic class ExcelModifier {\n\n    public static void main(String[] args) {\n        \/\/ --- 1. \u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19 ---\n        String inputFilePath = \"C:\/path\/to\/your\/file.xlsx\"; \/\/ &lt;-- *** \u0e41\u0e01\u0e49\u0e44\u0e02\u0e40\u0e1b\u0e47\u0e19\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e44\u0e1f\u0e25\u0e4c\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13 ***\n        String newValue = \"This is the new value!\"; \/\/ \u0e04\u0e48\u0e32\u0e43\u0e2b\u0e21\u0e48\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e43\u0e2a\u0e48\u0e43\u0e19 Cell A1\n\n        \/\/ --- 2. \u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e43\u0e08\u0e08\u0e32\u0e01 User ---\n        Scanner scanner = new Scanner(System.in);\n        System.out.println(\"\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e17\u0e31\u0e1a\u0e44\u0e1f\u0e25\u0e4c\u0e40\u0e14\u0e34\u0e21\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48? (yes\/no):\");\n        String choice = scanner.nextLine().trim().toLowerCase();\n        scanner.close();\n\n        boolean overwrite = choice.equals(\"yes\");\n\n        try {\n            \/\/ --- 3. \u0e40\u0e1b\u0e34\u0e14\u0e44\u0e1f\u0e25\u0e4c Excel \u0e14\u0e49\u0e27\u0e22 WorkbookFactory ---\n            System.out.println(\"\u0e01\u0e33\u0e25\u0e31\u0e07\u0e40\u0e1b\u0e34\u0e14\u0e44\u0e1f\u0e25\u0e4c: \" + inputFilePath);\n            File inputFile = new File(inputFilePath);\n            \/\/ \u0e43\u0e0a\u0e49 FileInputStream \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2d\u0e48\u0e32\u0e19\u0e44\u0e1f\u0e25\u0e4c\n            FileInputStream fis = new FileInputStream(inputFile);\n\n            \/\/ WorkbookFactory \u0e08\u0e30\u0e2a\u0e23\u0e49\u0e32\u0e07 Workbook \u0e17\u0e35\u0e48\u0e40\u0e2b\u0e21\u0e32\u0e30\u0e2a\u0e21 (HSSFWorkbook \u0e2b\u0e23\u0e37\u0e2d XSSFWorkbook) \u0e43\u0e2b\u0e49\u0e40\u0e2d\u0e07\n            \/\/ \u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49 try-with-resources \u0e08\u0e30\u0e0a\u0e48\u0e27\u0e22\u0e1b\u0e34\u0e14 Workbook \u0e41\u0e25\u0e30 Stream \u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\n            try (Workbook workbook = WorkbookFactory.create(fis)) {\n                \n                \/\/ --- 4. \u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e19 Cell A1 ---\n                \/\/ \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e0a\u0e35\u0e15\u0e41\u0e23\u0e01 (index \u0e17\u0e35\u0e48 0)\n                Sheet sheet = workbook.getSheetAt(0);\n\n                \/\/ \u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e41\u0e16\u0e27\u0e41\u0e23\u0e01 (Row 1 \u0e04\u0e37\u0e2d index 0)\n                \/\/ \u0e16\u0e49\u0e32\u0e41\u0e16\u0e27\u0e44\u0e21\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48 \u0e43\u0e2b\u0e49\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e02\u0e36\u0e49\u0e19\u0e21\u0e32\u0e43\u0e2b\u0e21\u0e48\n                Row row = sheet.getRow(0);\n                if (row == null) {\n                    row = sheet.createRow(0);\n                }\n\n                \/\/ \u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e40\u0e0b\u0e25\u0e25\u0e4c\u0e41\u0e23\u0e01 (Cell A \u0e04\u0e37\u0e2d index 0)\n                \/\/ \u0e16\u0e49\u0e32\u0e40\u0e0b\u0e25\u0e25\u0e4c\u0e44\u0e21\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48 \u0e43\u0e2b\u0e49\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e02\u0e36\u0e49\u0e19\u0e21\u0e32\u0e43\u0e2b\u0e21\u0e48\n                Cell cell = row.getCell(0);\n                if (cell == null) {\n                    cell = row.createCell(0);\n                }\n\n                \/\/ \u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e43\u0e2b\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e01\u0e31\u0e1a\u0e40\u0e0b\u0e25\u0e25\u0e4c\n                cell.setCellValue(newValue);\n                System.out.println(\"\u0e41\u0e01\u0e49\u0e44\u0e02 Cell A1 \u0e40\u0e1b\u0e47\u0e19\u0e04\u0e48\u0e32: \\\"\" + newValue + \"\\\" \u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22\u0e41\u0e25\u0e49\u0e27\");\n\n                \/\/ \u0e1b\u0e34\u0e14 FileInputStream \u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01\u0e2d\u0e48\u0e32\u0e19\u0e40\u0e2a\u0e23\u0e47\u0e08\n                fis.close();\n\n                \/\/ --- 5. \u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e44\u0e1f\u0e25\u0e4c ---\n                String outputFilePath;\n                if (overwrite) {\n                    \/\/ \u0e01\u0e23\u0e13\u0e35\u0e17\u0e31\u0e1a\u0e44\u0e1f\u0e25\u0e4c\u0e40\u0e14\u0e34\u0e21: \u0e43\u0e0a\u0e49 path \u0e40\u0e14\u0e34\u0e21\n                    outputFilePath = inputFilePath;\n                    System.out.println(\"\u0e01\u0e33\u0e25\u0e31\u0e07\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e17\u0e31\u0e1a\u0e44\u0e1f\u0e25\u0e4c\u0e40\u0e14\u0e34\u0e21...\");\n                } else {\n                    \/\/ \u0e01\u0e23\u0e13\u0e35\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e43\u0e2b\u0e21\u0e48: \u0e2a\u0e23\u0e49\u0e32\u0e07\u0e0a\u0e37\u0e48\u0e2d\u0e44\u0e1f\u0e25\u0e4c\u0e43\u0e2b\u0e21\u0e48\n                    outputFilePath = generateNewFileName(inputFilePath);\n                    System.out.println(\"\u0e01\u0e33\u0e25\u0e31\u0e07\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e40\u0e1b\u0e47\u0e19\u0e44\u0e1f\u0e25\u0e4c\u0e43\u0e2b\u0e21\u0e48: \" + outputFilePath);\n                }\n\n                \/\/ \u0e43\u0e0a\u0e49 FileOutputStream \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e02\u0e35\u0e22\u0e19\u0e44\u0e1f\u0e25\u0e4c\n                try (FileOutputStream fos = new FileOutputStream(outputFilePath)) {\n                    workbook.write(fos);\n                }\n\n                System.out.println(\"\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e44\u0e1f\u0e25\u0e4c\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08!\");\n            }\n\n        } catch (IOException e) {\n            System.err.println(\"\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e43\u0e19\u0e01\u0e32\u0e23\u0e2d\u0e48\u0e32\u0e19\u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e02\u0e35\u0e22\u0e19\u0e44\u0e1f\u0e25\u0e4c: \" + e.getMessage());\n            e.printStackTrace();\n        } catch (Exception e) {\n            System.err.println(\"\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e04\u0e32\u0e14\u0e04\u0e34\u0e14: \" + e.getMessage());\n            e.printStackTrace();\n        }\n    }\n\n    \/**\n     * Helper method to create a new file name like \"file_modified.xlsx\"\n     *\/\n    private static String generateNewFileName(String originalPath) {\n        int dotIndex = originalPath.lastIndexOf('.');\n        if (dotIndex == -1) {\n            return originalPath + \"_modified\";\n        }\n        String name = originalPath.substring(0, dotIndex);\n        String extension = originalPath.substring(dotIndex);\n        return name + \"_modified\" + extension;\n    }\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u0e43\u0e0a\u0e49 WorkbookFactory \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e17\u0e35\u0e48\u0e40\u0e23\u0e32\u0e08\u0e30\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e33\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49\u0e17\u0e31\u0e49\u0e07 XLS \u0e41\u0e25\u0e30 XLSX \u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e30\u0e27\u0e31\u0e07 \u0e04\u0e37\u0e2d \u0e16\u0e49\u0e32 \u0e41\u0e16\u0e27 \u0e2b\u0e23\u0e37\u0e2d cell \u0e17\u0e35\u0e48\u0e40\u0e23\u0e32\u0e08\u0e30\u0e40\u0e02\u0e35\u0e22\u0e19\u0e25\u0e07\u0e44\u0e1b\u0e21\u0e31\u0e19\u0e44\u0e21\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19 range \u0e17\u0e35\u0e48\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27&hellip;<\/p>\n","protected":false},"author":1,"featured_media":346,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,2],"tags":[],"class_list":["post-344","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\/344","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=344"}],"version-history":[{"count":1,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/posts\/344\/revisions"}],"predecessor-version":[{"id":345,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/posts\/344\/revisions\/345"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/media\/346"}],"wp:attachment":[{"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/media?parent=344"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/categories?post=344"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/tags?post=344"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}