当前位置: 首页 > 面试题库 >

Java。HSSF。Apache-poi。如何修改代码

黄弘盛
2023-03-14
问题内容

我的数据以以下格式存储(向下看):[-]表示空白单元格,右边可能只有10列(空格后)。像这样的东西:
[string0] [-] [string1] [string2] [string3] .. [string10] [-]

如何为以下代码更改此代码

1)仅获取[string0]

2)仅获取[string1] [string2] [string3] .. [string10] [-]

    try {

    FileInputStream file = new FileInputStream("C:\\Users\\student3\\"+sfilename+".xls");

    //Get the workbook instance for XLS file
    HSSFWorkbook workbook = new HSSFWorkbook(file);

    //Get first sheet from the workbook
    HSSFSheet sheet = workbook.getSheetAt(0);

    //Iterate through each rows from first sheet
    Iterator<Row> rowIterator = sheet.iterator();
    while(rowIterator.hasNext()) {
        Row row = rowIterator.next();

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

            Cell cell = cellIterator.next();

            switch(cell.getCellType()) {
                case Cell.CELL_TYPE_STRING:
                    System.out.print(cell.getStringCellValue() + "\t\t");
                    list1.add(cell.getStringCellValue());
                    break;
            }
        }
        System.out.println("");
    }
    file.close();
    FileOutputStream out =
            new FileOutputStream("C:\\Users\\student3\\"+sfilename+".xls");
    workbook.write(out);
    out.close();

我不知道如何停止Iterator。他吸收了所有..


问题答案:

如果我很清楚,您只想过滤您的第一列字符串,然后单独休息。

为什么不为此使用一个简单的计数器:

 while(rowIterator.hasNext()) {
    Row row = rowIterator.next();
    String RowContent = null;
    Iterator<Cell> cellIterator = row.cellIterator();
    while(cellIterator.hasNext()) {
        Cell cell = cellIterator.next();
        RowContent=RowContent+cell.toString();
    }
    //Code for saving RowContent or printing or whatever you want for text in complete row
}

RowContent将在每次迭代中串联单个行的每个单元格。



 类似资料:
  • HSSF是POI项目的Excel'97(-2007)文件格式的纯Java实现。XSSF是POI项目对Excel2007OOXML(.xlsx)文件格式的纯Java实现。 使用HSSF时是否有出口限制?

  • 我已经将HSSF中的所有旧代码都转换为SS,除了制作工作手册的部分。 旧代码:HSSFWorkbook wb=新HSSFWorkbook(新文件输入流(文件)); 新的非工作代码:工作簿[]wb2=新工作簿[]{New FileInputStream}; 这是该网站提供的一个转换示例: 新增:工作簿[]wbs=new Workbook[]{new HSSFWorkbook(), new XSSFW

  • 这里是ApachePOI4.x。我看到有两种类型的实现: HSSF工作手册 我需要编写一个Java 8应用程序,它可以读取带有“”(xls)或“”(xlsx)扩展名的Excel表格。也就是说,Excel文件是以“旧”(2003年以前)格式保存的,还是更新的格式保存的。 假设我对XLS文件使用HSSF,对XLSX文件使用XSSF,安全吗?或者映射逻辑在这里稍微复杂一点?这个答案似乎表明我是正确的,但

  • 当我修改服务器中现有的excel文件并复制到本地计算机并打开它时,我发现excel无法打开,因为某些内容不可读,是否要打开并修复此工作簿 已经努力解决了8个小时,但运气不好。如果有人能解释一下,我会很感激的。

  • 每当我使用Apatche POI打开Excel文件时,文件都会被修改,即使我只是在读取文件而不进行任何修改。 以这样的测试代码为例。 Test 总是失败,因为 Apache POI 总是会修改该文件。在测试使用MS Office新创建的空白Excel文件时,Apache POI将文件从8.1 kb切割到6.2 kb并损坏文件。 测试对象: 以及版本3.12 我是否可以防止Apache POI通过其

  • 问题内容: 假设我有一个整数集,并且我想增加集合中的每个整数。我该怎么做? 我可以在迭代时添加和删除集合中的元素吗? 在迭代原始集合时,是否需要创建一个新集合以将元素“复制并修改”到其中? 编辑:如果集合中的元素是不可变的呢? 问题答案: 您可以在迭代期间使用Iterator对象安全地从集合中删除;尝试在迭代时通过其API修改集合会破坏迭代器。Set类通过getIterator()提供一个迭代器。