简体   繁体   中英

can not convert xlsx to csv using poi api

I am trying to convert xlsx file to csv file using below code

import java.io.*;
import java.util.Iterator;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class XLStoCSVConvert {

     static void xlsx(File inputFile, File outputFile) {
            // For storing data into CSV files
            StringBuffer data = new StringBuffer();

            try {
                FileOutputStream fos = new FileOutputStream(outputFile);
                // Get the workbook object for XLSX file
                System.out.println("working......1");
                XSSFWorkbook wBook = new XSSFWorkbook(new FileInputStream(inputFile));
                // Get first sheet from the workbook
                System.out.println("working......2");
                XSSFSheet sheet = wBook.getSheetAt(0);
                Row row;
                Cell cell;
                // Iterate through each rows from first sheet
                Iterator<Row> rowIterator = sheet.iterator();

                while (rowIterator.hasNext()) {
                    row = rowIterator.next();

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

                        cell = cellIterator.next();

                        switch (cell.getCellType()) {
                            case Cell.CELL_TYPE_BOOLEAN:
                                data.append(cell.getBooleanCellValue() + ",");

                                break;
                            case Cell.CELL_TYPE_NUMERIC:
                                data.append(cell.getNumericCellValue() + ",");

                                break;
                            case Cell.CELL_TYPE_STRING:
                                data.append(cell.getStringCellValue() + ",");
                                break;

                            case Cell.CELL_TYPE_BLANK:
                                data.append("" + ",");
                                break;
                            default:
                                data.append(cell + ",");

                        }
                    }
                }

                fos.write(data.toString().getBytes());
                fos.close();

            } catch (Exception ioe) {
                ioe.printStackTrace();
            }
        }

    public static void main(String[] args) {
        File inputFile = new File("/home/raptorjd4/Desktop/ToConsult.xlsx");
        //writing excel data to csv 
        File outputFile = new File("/home/raptorjd4/Desktop/RaptorTrackingSystem/ToConsult.csv");
        xlsx(inputFile, outputFile);

    }

}

But i am getting output,

Working......1 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/UnsupportedFileFormatException

My jar in lib folder,

poi-3.5-FINAL.jar

poi-ooxml-3.11.jar

why i am getting this error when i mapped all needed jar file in lib folder.

Where am i doing mistake?

For me your code worked just fine, below are the dependencies I added:-

在此处输入图片说明

The problem is either with the data in your excel or some missing dependency.
Ensure that you do have all the necessary dependencies on your classpath.

Your problem is this part:

  • poi-3.5-FINAL.jar

  • poi-ooxml-3.11.jar

As explained in this Apache POI FAQ entry :

Can I mix POI jars from different versions?

No. This is not supported.

All POI jars in use must come from the same version. A combination such as poi-3.11.jar and poi-ooxml-3.9.jar is not supported, and will fail to work in unpredictable ways.

You must ensure that all of your Apache POI jars come from the same version!

Switch your jars to be from the same version, ideally the latest, and you should be good

I solved this problem by adding below jar files,

poi-3.9.jar

poi-ooxml-3.9.jar

poi-ooxml-schemas-3.9-20121203.jar

xmlbeans-2.3.0.jar

dom4j-1.6.1.jar

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM