问:我想使用Java将重复记录从一个Excel文件移动到另一个Excel文件。
答:在这里,下面的代码可以将唯一记录从Writesheet.xlsx复制到WritesheetNew.xlsx文件中。Writesheet.xlsx可以包含重复记录,因此可以将唯一记录复制到新的WritesheetNew.xlsx文件中。
包com.evon;
导入java.io.File;
导入java.io.FileInputStream;
导入java.io.FileOutputStream;
导入java.util.HashSet;
导入java.util.Iterator;
导入java.util.Map;
导入java.util.Set;
导入java.util.TreeMap;
导入java.util.TreeSet;
导入org.apache.poi.ss.usermodel.Cell;
导入org.apache.poi.ss.usermodel.Row;
导入org.apache.poi.xssf.usermodel.XSSFRow;
导入org.apache.poi.xssf.usermodel.XSSFSheet;
导入org.apache.poi.xssf.usermodel.XSSFWorkbook;
公共类ReadWriteExcel {
公共静态无效WriteSheet()引发异常
{
//创建空白工作簿
XSSFWorkbook工作簿=新的XSSFWorkbook();
//创建一张空白纸
XSSFSheet电子表格= workbook.createSheet(“ Employee Details”);
//创建行对象
XSSFR行;
//此数据需要写入(Object [])
Map <String,Object []> empinfo = new TreeMap();
empinfo.put(“ 1”,new Object [] {“ EMP NAME”}));
empinfo.put(“ 2”,new Object [] {“ Manish”});
empinfo.put(“ 3”,new Object [] {“ Manish”});
empinfo.put(“ 4”,new Object [] {“ Namita”});
empinfo.put(“ 7”,new Object [] {“ Namita”});
empinfo.put(“ 5”,new Object [] {“ Akhilesh”});
empinfo.put(“ 6”,new Object [] {“ Neelam”});
//遍历数据并写入工作表
设置<String> keyid = empinfo.keySet();
int rowid = 0;
对于(字符串键:keyid)
{
行=电子表格.createRow(rowid ++);
对象[] objectArr = empinfo.get(key);
int cellid = 0;
对于(Object obj:objectArr)
{
单元格单元格= row.createCell(cellid ++);
cell.setCellValue((String)obj);
}
}
//在文件系统中写入工作簿
FileOutputStream输出=新FileOutputStream(新File(“ / home / manish / Desktop / Writesheet.xlsx”));
workbook.write(out);
out.close();
}
公共静态无效CheckDuplicate(文件文件)引发异常
{
组 newReordsList =新的树集();
FileInputStream fis =新的FileInputStream(file);
XSSFWorkbook工作簿=新的XSSFWorkbook(fis);
XSSFSheet电子表格= workbook.getSheetAt(0);
XSSFR行;
迭代器<行> rowIterator =电子表格.iterator();
同时(rowIterator.hasNext())
{
row =(XSSFRow)rowIterator.next();
//System.out.println("----->"+spreadsheet.get);
Iterator <Cell> cellIterator = row.cellIterator();
细胞
而(cellIterator.hasNext())
{
cell = cellIterator.next();
if(cell.getRowIndex()== 0)
继续;
开关(cell.getCellType())
{
案例Cell.CELL_TYPE_STRING:
//System.out.print(cell.getStringCellValue()+“ \ t \ t”);
newReordsList.add(cell.getStringCellValue());
打破;
}
}
}
fis.close();
copyInExcel(newReordsList);
}
公共静态无效copyInExcel(Set 记录)引发异常
{
//创建空白工作簿
XSSFWorkbook工作簿=新的XSSFWorkbook();
//创建一张空白纸
XSSFSheet电子表格= workbook.createSheet(“新的员工详细信息”);
//创建行对象
XSSFR行;
int rowid = 0;
int cellid = 0;
对于(字符串记录:记录)
{
行=电子表格.createRow(rowid ++);
单元格单元格= row.createCell(cellid);
cell.setCellValue(record);
}
//在文件系统中写入工作簿
FileOutputStream out =新FileOutputStream(新File(“ / home / manish / Desktop / WritesheetNew.xlsx”));
workbook.write(out);
out.close();
}
公共静态void main(String [] args){
尝试{
//编写Excel工作表
WriteSheet();
//复制Excel工作表
CheckDuplicate(new File(“ / home / manish / Desktop / Writesheet.xlsx”));;
}
catch(Exception e){System.out.println(e);}
}
}