JXL包到底怎么安装,classpath到底在哪

全网都在说把jxl.jar 放到class path里面,我不明白,classpath到底是个什么东西。

我用的IntelliJ IDEA Community Edition 2020.3.2 x64

应该怎么添加包呀。

还有全网说安装apache poi都是在classpath末尾加:“

C:\poi-3.9\poi-3.9-20121203.jar;”

“C:\poi-3.9\poi-ooxml-3.9-20121203.jar;”

“C:\poi-3.9\poi-ooxml-schemas-3.9-20121203.jar;”

“C:\poi-3.9\ooxml-lib\dom4j-1.6.1.jar;”

“C:\poi-3.9\ooxml-lib\xmlbeans-2.3.0.jar;.;”

兄弟睡了吗?我接着给你答疑。

我直接说如何在IntelliJ IDEA Community Edition 2020.3.2 x64下面安装jxl包吧。

首先下载jxl包,包地址是http://www.java2s.com/Code/JarDownload/jxl/jxl-2.6.jar.zip

接下来解压到你知道的位置。我解压到的地方是C:/Coding/Java/jxl-2.6.jar

随后点IntelliJ IDEA Community Edition,自己创建一个工程,创建好之后把我的代码放进test.java文件里面。

这个时候点开左上角的File,找到Project Structure,从左侧的Project Settings里面选择Modules, 右边有个Dependencies, 点下面的加号,1.Jars or Directions. 这个时候找到刚刚解压好的地方,把jxl-2.6.jar打开就行了。

另外,由于之前回答问题的时候代码比较仓促,我刚刚重新订正了一下上一次代码的BUG,更正之后的代码如下,亲测可用,使用的时候只需要把column修改成你指定的那一列就可以了(注意是从第0列开始的):

import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;

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

public class writeXls{
    public static void main(String[] args) throws IOException, WriteException, BiffException
    {
        File xlsFile = new File("C:\\Coding\\Java\\CSDN\\Excel\\test.xls");
        File outFile = new File("out.xls");
        // 获得读入的工作簿对象
        Workbook workbook = Workbook.getWorkbook(xlsFile);
        // 获得读入的所有工作表
        Sheet[] sheets = workbook.getSheets();

        WritableWorkbook outbook = Workbook.createWorkbook(outFile);
        // 创建一个工作表
        WritableSheet outsheet = outbook.createSheet("sheet1", 0);

        // 指定第0列作为筛选重复行
        int column = 0;
        // 用来记录哪些行重复了

        // 遍历读入的工作表
        if (sheets != null){
            Sheet sheet = sheets[0];
            // 获得行数
            int rows = sheet.getRows();
            // 获得列数
            int cols = sheet.getColumns();
            // 读取数据
            int []repeated = new int[rows];
            // 初始化,全部赋值为0(不重复)
            for(int i = 0; i < rows; i++)
                repeated[i] = 0;

            // 第一遍筛选,判断哪几行是重复的。
            for (int i = 0; i < rows; i++){
                // 这行已经重复,就不再重新判断一遍。
                if(repeated[i]==1)
                    continue;
                for(int j = i + 1; j < rows; j++){
                    // 这行和上面重复了,记录这行重复,为1.
                    if(sheet.getCell(column,i).getContents()==sheet.getCell(column,j).getContents()){
                        repeated[j] = 1;
                    }
                }

            }
            // 记录正在写入表的第几行
            int writingRow = 0;
            // 第二遍写入数据,将未重复的行写入新表中。
            for(int row = 0; row < rows; row++){
                if(repeated[row] == 1){
                    continue;
                }
                for(int col = 0; col < cols; col++){
                    outsheet.addCell(new Label(col, writingRow, sheet.getCell(col, row).getContents()));
                }
                writingRow++;
            }
            outbook.write();

        }
        workbook.close();
        outbook.close();
    }
}

 

示例:

输入的test.xls长这样:

我根据第0列作为筛选的标准,可以看到有sss重复了两次,ddlk重复了一次。经过刚刚的代码之后,输出out.xls,长这样。

实现了去重的效果,并且只保留重复出现的第一行。