Skip to content

Instantly share code, notes, and snippets.

@Munawwar
Last active November 2, 2022 08:37
Show Gist options
  • Star 24 You must be signed in to star a gist
  • Fork 6 You must be signed in to fork a gist
  • Save Munawwar/924389 to your computer and use it in GitHub Desktop.
Save Munawwar/924389 to your computer and use it in GitHub Desktop.
Java - Apache POI - Convert XLS/XLSX to CSV
/*
* Dependencies: Apache POI Library from http://poi.apache.org/
*/
package poi_excels;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
public class ExcelReading {
public static void echoAsCSV(Sheet sheet) {
Row row = null;
for (int i = 0; i <= sheet.getLastRowNum(); i++) {
row = sheet.getRow(i);
for (int j = 0; j < row.getLastCellNum(); j++) {
System.out.print("\"" + row.getCell(j) + "\";");
}
System.out.println();
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
InputStream inp = null;
try {
inp = new FileInputStream("myxlsx/sample.xlsx");
Workbook wb = WorkbookFactory.create(inp);
for(int i=0;i<wb.getNumberOfSheets();i++) {
System.out.println(wb.getSheetAt(i).getSheetName());
echoAsCSV(wb.getSheetAt(i));
}
} catch (InvalidFormatException ex) {
Logger.getLogger(ExcelReading.class.getName()).log(Level.SEVERE, null, ex);
} catch (FileNotFoundException ex) {
Logger.getLogger(ExcelReading.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(ExcelReading.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
inp.close();
} catch (IOException ex) {
Logger.getLogger(ExcelReading.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
@RainerBlessing
Copy link

getLastRowNum() returns a zero based number, so it should be "<=" in the for loop

@Munawwar
Copy link
Author

Munawwar commented Jan 8, 2013

Right, updated the gist. Ref

@dsangria119
Copy link

Hello,

What are your terms of usage for this code?

Thank you!

@mbe24
Copy link

mbe24 commented Nov 10, 2017

@Sathishboobalan
Copy link

is any API(open source) to create csv file with one line(without looping data)?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment