如何将xlsx文件转换为文本文件,以便文本文件获取文本文件中的确切结构以及如何管理合并单元格

时间:2018-02-07 20:25:48

标签: java excel apache-poi

我正在使用具有结构的xlsx文件,我必须将结构完全复制到文本文件。我的代码是从xlsx文件复制所有数据并将它们粘贴到txt文件中,但结构不是就是这样。我给出了完整的代码以及xlsx文件

enter image description here

我正在使用的代码是

public class Test {

public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {
    PrintWriter writer = new PrintWriter("D:\\data.txt", "UTF-8");
    try {

        FileInputStream file = new FileInputStream(new File("D:\\resources\\BLF_20170111_BDPM_C.xlsx"));

        //Get the workbook instance for XLS file 
        XSSFWorkbook workbook = new XSSFWorkbook (file);

        //Get first sheet from the workbook
        XSSFSheet sheet = workbook.getSheetAt(0);


        //Iterate through each rows from first sheet
        Iterator<Row> rowIterator = sheet.iterator();
        while(rowIterator.hasNext()) {
            Row row = rowIterator.next();

            //For each row, iterate through each columns
            Iterator<Cell> cellIterator = row.cellIterator();
            while(cellIterator.hasNext()) {

                Cell cell = cellIterator.next();

                switch(cell.getCellType()) {
                    case Cell.CELL_TYPE_BOOLEAN:
                        System.out.print(cell.getBooleanCellValue() + "\t\t");
                        writer.print(cell.getBooleanCellValue() + "\t\t");
                        break;
                    case Cell.CELL_TYPE_NUMERIC:
                        System.out.println(cell.getNumericCellValue() + "\t\t");
                        writer.println(cell.getNumericCellValue() + "\t\t");
                        break;
                    case Cell.CELL_TYPE_STRING:
                        System.out.println(cell.getStringCellValue() + "\t\t"); // here i am writing the data to the text file.
                        writer.println(cell.getStringCellValue()+ "\t\t");
                        break;
                }
            }
            System.out.println("");
        }
        file.close();
        FileOutputStream out = 
            new FileOutputStream(new File("D:\\writedatasamp.txt"));
        workbook.write(out);
        out.close();

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }finally {
        writer.close();
    }

}

}

但问题是数据即将来临

赞助
合并细胞的一部分
合并细胞的一部分
合并细胞的一部分
合并细胞的一部分
合并细胞的一部分
合并细胞的一部分
合并细胞的一部分
合并细胞的一部分
合并细胞的一部分
合并细胞的一部分
HJL
邮政特权 计数从01-01-2018开始到30-11-2018
开始日期201年1月16日至2001年 名1
名称2
NAME3
NAME4
NAME5
Name6
合并细胞的一部分
Name7
合并细胞的一部分
Name8
Name9
同上。 CCY
管理员。 CCY
同上。 CCY
管理员。 CCY
管理员。 CCY
管理员。 CCY
印度(1.2%)
ARC 56
INR
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
ARC 57
INR
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
ARC 58
INR
0.0
0.0
0.0
0.0
0.0
0.0
0.0

那么我可以获得与xlsx文件相同的结构吗?而在赞助行中更多的其他单元格被合并,因此它给出了一个消息,即合并单元格的一部分。我怎么能解决这个问题?

0 个答案:

没有答案