Using Apache POI, I am extracting values from an Excel file and writing to another Excel file.
However I am getting empty cells in the output Excel file. How do I:
- detect at the end which rows are empty
- and then remove those rows?
I have added this part of code to remove rows. I am able to detect the rows which are empty but not able to remove it.
Please tell how to implement in the above code I added.
I did by adding this
public class Nlp_health {
private static boolean isRowEmpty;
public static void main(String[] args) throws IOException, ParseException, RowsExceededException, WriteException
{
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet1 = wb.createSheet("Sheet1");
XSSFSheet sheet2 = wb.createSheet("Sheet2");
XSSFSheet sheet3 = wb.createSheet("Sheet3");
XSSFRow row_1 = sheet1.createRow((char)0);
XSSFRow row_2 = sheet2.createRow((char)0);
XSSFRow row_3 = sheet3.createRow((char)0);
row_1.createCell(0).setCellValue("Column1");
row_1.createCell(1).setCellValue("Column2");
row_2.createCell(0).setCellValue("Column1");
row_2.createCell(1).setCellValue("Column2");
row_3.createCell(0).setCellValue("Column1");
row_3.createCell(1).setCellValue("Column2");
FileOutputStream fileOut = new FileOutputStream("C:\\Users\\Master\\Desktop\\Nlp_health3.xlsx");
wb.write(fileOut);
fileOut.close();
Xls_Reader datatable = new Xls_Reader("C:\\Users\\Master\\Desktop\\SMB NLP Projects to Update 20140722.xlsx");
Xls_Reader datatable1 = new Xls_Reader("C:\\Users\\Master\\Desktop\\Nlp_health.xlsx");
int rows_count = datatable.getRowCount("Projects View");
System.out.println("Total number of rows = " + rows_count);
System.out.println();
for(int i=4; i<rows_count;i++)
{
String milestone = datatable.getCellData("Projects View", "SMB Project Health", i);
String project = datatable.getCellData("Projects View", "Name", i);
{
//System.out.println(value);
if (milestone.equals("Yellow")){
System.out.println("1st step = " + project);
datatable1.setCellData("Sheet1", "Column1", i, project);
datatable1.setCellData("Sheet1", "Column2", i, "Yellow");
//System.out.println(project);
}
if(milestone.equals("Red")){
System.out.println("2nd step = " + project);
datatable1.setCellData("Sheet1", "Column2", i, "Red");
datatable1.setCellData("Sheet1", "Column1", i, project);
}
}
}
int rows_count_new = datatable1.getRowCount("Sheet1");
System.out.println("Number of rows are" + rows_count_new );
for (int j = 0; j <= rows_count_new; j++){
String empty_cells = datatable1.getCellData("Sheet1", "Column1", j);
System.out.println("Empty step1 = " + empty_cells);
if(sheet1.getRow(j)==null){
sheet1.shiftRows(j + 1, sheet1.getLastRowNum(), -1);
j--;
continue;
}
for(int k =0; k<sheet1.getRow(j).getLastCellNum();k++){
if(sheet1.getRow(j).getCell(k).toString().trim().equals("")){
isRowEmpty=true;
}else {
isRowEmpty=false;
break;
}
}
if(isRowEmpty==true){
sheet1.shiftRows(j + 1, sheet1.getLastRowNum(), -1);
j--;
}
}
}
}