在Java中读取Excel文件,但第一行除外

时间:2019-03-01 10:23:03

标签: java excel apache-poi ireport

我正在尝试从使用xlsx文件的JasperReport模板自动创建报告,我用来从excel文件读取的方法是:

String[] columnNames = new String[]{"arg1", "arg2", "arg3", "arg4", "arg5"};
int[] columnIndexes = new int[]{0, 1, 2, 3, 4};
ds = new JRXlsxDataSource(JRLoader.getLocationInputStream("../Book2.xlsx"));
            ds.setColumnNames(columnNames, columnIndexes);

但是问题是,excel文件应该只包含数据,我应该手动确定列,我的问题是如何直接从第一行读取列,然后将文件的其余部分输入到JRXlsxDataSource方法中(如果不排除它,它将生成类型错误,期望Long但得到String)? 谢谢

更新:我尝试获取第一行然后将其删除,但由于POI避免了对该文件的修改,因此我无法保存该文件:

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);
            }
        }
    }

    public static String[] getRow(HSSFSheet sheet) {
        String[] values = null;
        for (int i=0; i<5;i++){
            values[i]=sheet.getRow(0).getCell(0).toString();    
        }
        return values;

    }

0 个答案:

没有答案