java jxl 读取excel时读取了很多空行 求解决办法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java jxl 读取excel时读取了很多空行 求解决办法相关的知识,希望对你有一定的参考价值。

比如说我一个excel只有20行数据,但是读取的时候,sheet的结果却有31条数据 或者更多!多出来的数据都是空的,但是会导致后期的校验通不过!在线等。求大神解决方案

这应该是excel文件中的问题,看看是不是文件中后面那些行里面有空格,或者做过其他标记,可以直接把excel的第21到第31行选中然后删除,保存好之后重新用jxl读取试试。 参考技术A 加上单元格值的判断,如果其中有比不为空的单元格,可以去判断此单元格,如果单元格为空,就直接continue跳过这个一行,或者break跳出循环。追问

你指的是一个个单元格去判断还是?

追答

看你的excel内容了,如果都不允许为空的,判断行的第一个单元格就可以了,如果第一个可以为空,就判断第二个罗,依次来推。

参考技术B 你的数据不是横向对齐排列的吗 getCellFormat() 等于 null 或者 “”的时候就return被 参考技术C 1. 单元格内容是连续不为空的行 - 可以判空 if(row == null) break; //跳出循环
2. 单元格内容是间隔不为空的行 - 可以 continue; // 跳过空行
参考技术D 参考答案: 上帝助自助者。

如何使用 JXL 2.6.12 jar 读取 excel 文件

【中文标题】如何使用 JXL 2.6.12 jar 读取 excel 文件【英文标题】:How to read excel file using JXL 2.6.12 jar 【发布时间】:2011-03-24 04:22:26 【问题描述】:

当我在我的 eclipse 项目中添加 jxl.jar 时,它在控制台中看到了 dalvik 格式的转换错误。

控制台显示错误:

[2010-08-02 19:11:22 - TestApp] 写入输出时遇到问题:不应该发生

[2010-08-02 19:11:22 - TestApp] 转换为 Dalvik 格式失败,出现错误 2

代码没问题

下面是我的代码:

import java.io.File;
import java.io.IOException;

import jxl.Cell;
import jxl.CellType;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

public class ReadExcel 

    private String inputFile;

    public void setInputFile(String inputFile) 
        this.inputFile = inputFile;
    

    public void read() throws IOException  
        File inputWorkbook = new File(inputFile);
        Workbook w;
        try 
            w = Workbook.getWorkbook(inputWorkbook);
            // Get the first sheet
            Sheet sheet = w.getSheet(0);
            // Loop over first 10 column and lines

            for (int j = 0; j < sheet.getColumns(); j++) 
                for (int i = 0; i < sheet.getRows(); i++) 
                    Cell cell = sheet.getCell(j, i);
                    CellType type = cell.getType();
                    if (cell.getType() == CellType.LABEL) 
                        System.out.println("I got a label "
                                + cell.getContents());
                    

                    if (cell.getType() == CellType.NUMBER) 
                        System.out.println("I got a number "
                                + cell.getContents());
                    

                
            
         catch (BiffException e) 
            e.printStackTrace();
        
    




有没有办法解决这个问题?

谢谢 明图

【问题讨论】:

最好发布您收到的错误消息 控制台中显示错误:[2010-08-02 19:11:22 - TestApp] 写入输出时遇到问题:不应该发生 [2010-08-02 19:11:22 - TestApp] 转换到 Dalvik 格式失败,错误 2 【参考方案1】:
CellType type = cell.getType();

if (cell.getType() == cell.LABEL) 
     System.out.println("I got a label " + cell.getContents());


if (cell.getType() == cell.NUMBER) 
     System.out.println("I got a number " + cell.getContents());

使用cell 而不是CellType

【讨论】:

以上是关于java jxl 读取excel时读取了很多空行 求解决办法的主要内容,如果未能解决你的问题,请参考以下文章

java用jxl读取网页上下载的excel文件,怎么识别?求解答

Java读取Excel中数据时怎么判断Excel中的最后一行

Java通过jxl解析Excel文件入库,及日期格式处理方式 (附源代码)

JAVA利用jxl读取Excel内容

Java通过jxl读取Excel

jxl读取excel导入到数据库,报错java.lang.NoClassDefFoundError: jxl/read/biff/BiffException