全网都在说把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,长这样。
实现了去重的效果,并且只保留重复出现的第一行。