【问题标题】:How to do validation on duplicate records when reading an excel file读取excel文件时如何对重复记录进行验证
【发布时间】:2015-01-30 01:06:57
【问题描述】:

我可以根据当前代码从excel文件中读取数据。只是我不知道如何在 excel 中找到重复记录时进行验证。需要专家的指导,任何帮助将不胜感激!

在excel文件中记录

序列号 |单位编号 |姓名 |姓名 2 | BANK_CODE | BANK_REF_NO
1           | A2-1-1    |阿里   |阿布      | 123456789     | 999999999
2           | A2-1-1    | AKI   | ABA     | 222222222     | 888888888

JSP

       <%     
        vTable = new Vector();

        Vector vGetExcel=ReadXLSXFile.importExcelSheet(upload_path+"//"+ATTACH_FILE);
        for (int i=0;i<vGetExcel.size();i++){

        Vector vTableRow = (Vector)vGetExcel.elementAt(i);

        if(vTableRow.size()>=4)
        {

            String sSEQ_NO          = (String) vTableRow.elementAt(0);
            String sUNIT_NO         = (String) vTableRow.elementAt(1);
            String sOWNER_NAME      = (String) vTableRow.elementAt(2);
            String sOWNER_NAME2     = (String) vTableRow.elementAt(3);
            String sMORTGAGEE_NAME  = (String) vTableRow.elementAt(4);
            String sBANK_REF        = (String) vTableRow.elementAt(5);
            intSeqNo                = vTable.size();

            if(sUNIT_NO.equals(""))
            {
                break;
            }

            if(!sOWNER_NAME.equals(""))
            {
                intSeqNo   += 1;
                SERIAL      = df.format(intSeqNo);

                Vector vRecord  = new Vector();
                vRecord.addElement(Integer.toString(i+1));
                vRecord.addElement(Integer.toString(i+1));
                vRecord.addElement(sUNIT_NO);
                vRecord.addElement(sOWNER_NAME.toUpperCase());
                vRecord.addElement(sOWNER_NAME2.toUpperCase());
                vRecord.addElement(sMORTGAGEE_NAME.toUpperCase());
                vRecord.addElement(sBANK_REF);
                vRecord.addElement(SERIAL);
                vTable.addElement(vRecord);
            }               
            else
            {
                break;
            }
        } %>

读取XLSXFile.java

public Vector importExcelSheet(String fileName)
{
    Vector cellVectorHolder = new Vector();
    try
    {
        Workbook workBook = WorkbookFactory.create(new FileInputStream(fileName));
        Sheet sheet = workBook.getSheetAt(0);
        Iterator rowIter = sheet.rowIterator();

        while(rowIter.hasNext())
        {
            XSSFRow row = (XSSFRow) rowIter.next();
            Iterator cellIter = row.cellIterator();
            Vector cellStoreVector=new Vector();

            while(cellIter.hasNext())
            {
                XSSFCell cell = (XSSFCell) cellIter.next();
                cellStoreVector.addElement(cell+"");
            }
            cellVectorHolder.addElement(cellStoreVector);
        }
    }
    catch (Exception e)
    {
        System.out.println(e.getMessage());
    }
    return cellVectorHolder;
}

预期结果:从excel读取文件时,如果发现重复记录,则中断。

【问题讨论】:

  • 复制了哪一列。只需有一个变量来保留最后一个值并检查当前值。也请不要将 JSP 用于 java 代码。

标签: java javascript jsp validation


【解决方案1】:

试试这个

ArrayList lastUnitNo = new ArrayList ();
for (int i=0;i<vGetExcel.size();i++){

    Vector vTableRow = (Vector)vGetExcel.elementAt(i);

    if(vTableRow.size()>=4)
    {

        String sSEQ_NO          = (String) vTableRow.elementAt(0);
        String sUNIT_NO         = (String) vTableRow.elementAt(1);
        String sOWNER_NAME      = (String) vTableRow.elementAt(2);
        String sOWNER_NAME2     = (String) vTableRow.elementAt(3);
        String sMORTGAGEE_NAME  = (String) vTableRow.elementAt(4);
        String sBANK_REF        = (String) vTableRow.elementAt(5);
        intSeqNo                = vTable.size();

        if (lastUnitNo.contains(sUNIT_NO) {
            break;
        }
        lastUnitNo.add (sUNIT_NO);

        ....
  }

【讨论】:

  • 不工作.. 如果重复记录按顺序排列。例如A2-1-1, A2-1-2 , A2-1-3 , A2-1-4 , A2-1-1 , A2-1-1 , A2-1-1 它的结果是A2-1-1, A2-1-2, A2-1-3 , A2-1-4, A2-1-1 其余的休息。
  • 酷哥@Scary Wombat!!它的工作!非常感谢!
猜你喜欢
  • 2013-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多