fma*_*ste 29 java apache excel row apache-poi
我正在使用Apache POi HSSF库将信息导入我的应用程序.问题是文件有一些额外/空行需要在解析之前先删除.
没有HSSFSheet.removeRow( int rowNum )方法.只有removeRow( HSSFRow row ).这个问题是无法删除空行.例如:  
sheet.removeRow( sheet.getRow(rowNum) );
在空行上给出NullPointerException,因为getRow()返回null.另外,正如我在论坛上看到的那样,removeRow()只删除单元格内容,但行仍然是空行.
有没有一种方法可以删除行(空或不)而不创建一个没有我要删除的行的全新工作表?
小智 30
 /**
 * Remove a row by its index
 * @param sheet a Excel sheet
 * @param rowIndex a 0 based index of removing row
 */
public static void removeRow(HSSFSheet sheet, int rowIndex) {
    int lastRowNum=sheet.getLastRowNum();
    if(rowIndex>=0&&rowIndex<lastRowNum){
        sheet.shiftRows(rowIndex+1,lastRowNum, -1);
    }
    if(rowIndex==lastRowNum){
        HSSFRow removingRow=sheet.getRow(rowIndex);
        if(removingRow!=null){
            sheet.removeRow(removingRow);
        }
    }
}
我知道,这是一个3岁的问题,但我最近必须解决同样的问题,我不得不用C#来做.这是我在NPOI,.Net 4.0中使用的功能
    public static void DeleteRow(this ISheet sheet, IRow row)
    {
        sheet.RemoveRow(row);   // this only deletes all the cell values
        int rowIndex = row.RowNum;
        int lastRowNum = sheet.LastRowNum;
        if (rowIndex >= 0 && rowIndex < lastRowNum)
        {
            sheet.ShiftRows(rowIndex + 1, lastRowNum, -1);
        }
    }
我试图深入大脑深处寻找一两年前与 POI 相关的经历,但我的第一个问题是:为什么在解析之前需要删除行?为什么不直接捕获调用的 null 结果sheet.getRow(rowNum)并继续前进呢?
| 归档时间: | 
 | 
| 查看次数: | 58973 次 | 
| 最近记录: |