java—从文本文件中读取泰语字符并使用ApachePOI写入excel

qncylg1j  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(380)

我正在阅读包含英文和泰语字符的.txt文件,并在excel中编写这些行。但有些行中泰语字符正在excel中打印垃圾值。由于将有多个文件,我正在阅读将其添加到arraylist(稍后将更改为treemap)的特定内容,并使用apachepoi在excel上编写这些arraylist。下面是示例文件内容、java代码和excel屏幕截图。谢谢你的帮助。
示例文件内容:D000003001101449620876436327 siriyakon tri 24112024112006100000037343atm
D00000310101154449620641542361107นางสุชาวดี กระเทศ 650283977 24112024112003900000059064csh公司
代码:

  1. File folder = new File("D:\\Files");
  2. File[] listOfFiles = folder.listFiles();
  3. for (File file : listOfFiles) {
  4. FileInputStream fis = new FileInputStream(file);
  5. InputStreamReader isr = new InputStreamReader(fis, StandardCharsets.UTF_8);
  6. BufferedReader br = new BufferedReader(isr); }
  7. else
  8. { if (line.startsWith("D"))
  9. {
  10. String str = line.substring(21,31);
  11. subscribernolist.add(str);
  12. custnolist.add(line.substring(76,85));
  13. customernamelist.add((String) line.substring(36,49));
  14. }
  15. }
  16. }
  17. }
  18. int currentRow = 0;
  19. Workbook workbook=new XSSFWorkbook();
  20. Sheet sheet = workbook.createSheet("Merge Data");
  21. Row rowheader = sheet.createRow(currentRow);
  22. Row row;
  23. rowheader.getCell(0).setCellValue("CUST NO.");
  24. rowheader.getCell(1).setCellValue("SUBSCRIBER NO.");
  25. rowheader.getCell(2).setCellValue("CUST NAME");
  26. currentRow++;
  27. for (int counter = 0; counter < customernamelist.size(); counter++) {
  28. row = sheet.createRow(currentRow);
  29. row.createCell(0).setCellValue(custnolist.get(counter));
  30. row.createCell(1).setCellValue(subscribernolist.get(counter));
  31. row.createCell(2).setCellValue(customernamelist.get(counter));
  32. currentRow++;
  33. }
  34. sheet.autoSizeColumn(3);
  35. FileOutputStream fileOut = new FileOutputStream(new File ("D:\\Files\\merge.xlsx"));
  36. workbook.write(fileOut);
  37. fileOut.close();
  38. workbook.close();
  39. }

excel编写如下

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题