Java 以特定格式读取excel文件

Java 以特定格式读取excel文件,java,excel,Java,Excel,我有一个excel文件…它有3列…我想以某种特定的方式读取它,如row1cell1,row1cell2,row1cell3:row2cell1,row2cell2,row2cell3:row3cell1,row3cell2,row3cell3表示在一行中,我需要逗号分隔的值,然后一个冒号和另一行应该开始,因此我只想为xlsx文件而不是xls执行此操作…提前感谢 public void read() throws IOException { String bulkString =

我有一个excel文件…它有3列…我想以某种特定的方式读取它,如row1cell1,row1cell2,row1cell3:row2cell1,row2cell2,row2cell3:row3cell1,row3cell2,row3cell3表示在一行中,我需要逗号分隔的值,然后一个冒号和另一行应该开始,因此我只想为xlsx文件而不是xls执行此操作…提前感谢

public void read() throws IOException {
        String bulkString = "";
        File file = new File(inputfile);
        String fileName = file.getName();
        // System.out.println(fileName);
        InputStream uploadedFileStream = new FileInputStream(file);
        boolean isValid = true;
        boolean isEmpty = true;
        boolean firstcolumn = true;

        try {
            if (uploadedFileStream != null && fileName != null
                    && fileName.indexOf("xlsx") != -1) {

                XSSFWorkbook workbook = new XSSFWorkbook(uploadedFileStream);
                XSSFSheet sheet = workbook.getSheetAt(0);
                Iterator rows = sheet.rowIterator();
                if (!rows.hasNext())
                    isEmpty = false;

                else {
                    firstcolumn = false;
                    while (rows.hasNext()) {
                        XSSFRow row = ((XSSFRow) rows.next());
                        // XSSFCell cell = row.getCell(0);
                        Iterator cells = row.cellIterator();

                        while (cells.hasNext()) {
                            XSSFCell cell = (XSSFCell) cells.next();
                            // XSSFCell cell = (XSSFCell) cells.next();
                            // Cell cellValue = row.getCell(0);
                            if (cell != null) {
                                firstcolumn = true;
                                if (cell.getCellType() == cell.CELL_TYPE_NUMERIC) {
                                    String cellValue = Math.round(cell
                                            .getNumericCellValue()) + "";
                                    if (cellValue.length() != 10) {
                                        isValid = false;
                                        break;
                                    }
                                    bulkString += cellValue + ",";
                                }
                                if (cell.getCellType() == cell.CELL_TYPE_STRING) {
                                    if (row.getRowNum() == 0) {
                                        continue; // just skip the rows if row
                                                    // number is 0
                                    }
                                    String cellValue = cell
                                            .getStringCellValue();
                                    if (cellValue.length() != 10) {
                                        isValid = false;
                                        break;
                                    }
                                    bulkString += cellValue + ",";
                                }
                            }
                        }

                        bulkString1.append(bulkString + ":");
                    }// bulkString1.append(bulkString+":");
                }// bulkString1.append(bulkString+":");`

那么这里的问题是什么呢?这就是我得到的:1234567890,aaaaaaaa,bbbbbbbbbb,:1234567890,aaaaaaaa,bbbbbbbbbbbb,1234567891,aaaaaaaaaaab,bbbbbbbbbbbbbbbbbb,:1234567890,aaaaaaaa,bbbbbbbbbbbbbb,1234567891,aaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbc,1234567892,:这是错误的多次,它正在阅读我的专栏,而且这是不正确的格式总结您打印出的bulkString1将使用更有意义的名称btw,然后是bulkString1.appendbulkString+:;因为您没有为每一行重置bulkString,所以它将附加到前一行。只要把bulkString=;在while rows.hasNext{之后,这应该会有所帮助。