⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 doexcel.java

📁 一个读取一个excel文件
💻 JAVA
字号:
package Bean;
import java.io.*;
import java.net.*;
import java.util.*;
import jxl.*;
import jxl.read.biff.BiffException;
import java.io.IOException;
import java.io.File;

public class doExcel 
{
    //文件名filename,如filename=34060817_付文刚_4_5_时间过程数据_06_10_11.xls
    private String filename;
    //绝对路径url,如url=D:/upload/340608/34060817/34060817_付文刚_4_5_时间过程数据_06_10_11.xls
    private String url;
    //theResponse用来存储判断的结果,如“XX数据分析成功”“XX数据分析失败”,返回的是一个总的结果
    private String theRespone="";
    // RightOrWrang用来表示判断的正确性,如果错了则为0
    private int RightOrWrang=1;
    //myNum用来存储总数据
    private String myNum;
    private String pathInfo;
    private String startTime;
    //zz用来存储小组的总数据
    private int zz=0;
    private setExcel aSetExcel;
    public doExcel()
    {
        
    }
    public void doPost()
    {
        Workbook myworkbook = null;
        try 
        {
            //打开表
            myworkbook = Workbook.getWorkbook(new File(url));
        } catch (BiffException ex) {
            theRespone="出现异常!文件不存在!";
        } catch (IOException ex) {
           theRespone="出现异常!文件不存在!";
        }
        int sheets = myworkbook.getNumberOfSheets();
        //循环取得Excel中的每一张sheet,即为每一个成员的数据
        for(int jj=1;jj<sheets;jj++)
        {
            int theAnswer=1;
            //取得第jj个成员的sheet表mysheet
            Sheet mysheet = myworkbook.getSheet(jj);
            String myname=mysheet.getName();         
            String s[][]=new String[15][4];
            //定义一个15行4列的二维数组,提取表中的时间数据,分别为“起始时间”,“结束时间”,“中断时间”,“每一行的总数据”
            for(int k=0;k<15;k++)
            {
                boolean pp=true;
                for(int l=0;l<4;l++)
                {
                    //取得每一个格子的数据
                    Cell a1 = mysheet.getCell(l+7,k+1);
                    String s3 = a1.getContents().toString();
                    //碰到空格,即为该个人的数据读完毕,跳出
                    if(s3.equals("")||s3.equals(null))
                    {
                        pp=false;
                        break;
                    }
                    s[k][l]=s3;
                }
                
                if(pp==false)
                        break;
           }
            //对取得的改成员的数据进行判断,看是否计算有错
           for(int k=0;k<15;k++)
           {    
                //遇到空格,则表示数据盘度完毕,跳出
                if(s[k][0]==null||s[k][0]=="")
                     break;
                //y为取得的单行时间总数              
                //调用validate()函数将表格内的时间如13:10:00转换成整型数分钟如13×60+10+0;
                //xx为计算得的单行时间总数,=“结束时间”-“起始时间”-“间隔时间”
                try
                {
                    int yy=Integer.parseInt(s[k][3]);
                    int xx = validate(s[k][1])-validate(s[k][0])-Integer.parseInt(s[k][2]);               
                    //如果yy!=xx则说明这一行数据计算错了,停止计算
                    if(yy!=xx)
                    { 
                        RightOrWrang=0;
                        theAnswer=0;
                         break;
                    }
                    //如果正确则将结果累加到zz中
                    zz=zz+yy; 
                    //循环读入改成员得每一行数据作判断,直到其数据全判断了
                 }
                catch(Exception e1)
                {
                    RightOrWrang=0;
                    theAnswer=0;
                    theRespone=theRespone+"<p align=\"center\" ><font color=\"#FF0000\">"+myname+"时间格式不对!</font></p></h1>"+"<p align=\"center\" ><font color=\"#FF0000\">如时间格式不是13:00:00格式<br>或则是他的sheet表中最后一行数据未与后面的老师给的“说明行”分割开,至少需留有一行空白</font>";  
                    break;
                }
           }
            //如果出错,theRespone中加上一句“XX数据计算有错",颜色为红色
            if(theAnswer==0)
            {
             //   theRespone=theRespone+myname+"数据分析有错<br>";
                theRespone=theRespone+"<p align=\"center\"><font color=\"#FF0000\">"+myname+"数据计算有错"
                        +"</font></p>";
            }
            else
            {
                 //如果正确,theRespone中加上一句“XX数据计算正确",颜色为黑色
               //   theRespone=theRespone+myname+"数据分析成功<br>";
                 theRespone=theRespone+"<p align=\"center\"><font color=\"#000000\">"+myname+"数据计算成功"
                        +"</font></p>";                    
            }
            //循环读入每一个成员数据,直到所有成员得都读完则跳出循环
       }
      //如果每个成员数据无误,则读取汇总表进行判断  
     if(RightOrWrang==1)
     {
        //读取汇总表
       Sheet mysheet1  = myworkbook.getSheet(0); 
       String sss[][]=new String[6][2];
       //将汇总表中得个人总数据及小组总数据读入二维数组sss[][]中
       for(int k=0;k<6;k++)
       {
           boolean ppp=true;
           for(int l=0;l<2;l++)
           {
               Cell a1 = mysheet1.getCell(l+3,k+1);
               String ss1 = a1.getContents().toString();
               if(ss1.equals("")||ss1.equals(null))
               {
                   ppp=false;
                       break;
                }
                sss[k][l]=ss1;
            }
        }
        int y=0;
        //将个人总数据累加得到 y
        for(int k=0;k<6;k++)
        {
            if(sss[k][0]==null||sss[k][0]=="")
                break;
            int z=Integer.parseInt(sss[k][0]);
            y=y+z;
        }
        myNum=sss[0][1];
        //取得的总数据为myNum,若y!=sss[0][1] (即myNum) 则说明汇总时计算出错
        if(y!=Integer.parseInt(sss[0][1]))
        {
             RightOrWrang=0;
          //  theRespone=theRespone+" 总数计算有错!"+"<br>";
             theRespone=theRespone+"<p align=\"center\"><font color=\"#FF0000\">小组数据汇总时计算有错!</font></p>";
        }
        //如果汇总时计算无误,在比较 y 与先前计算的总数zz比较,以判断单个成员的总时间是否计算出错
        else if(y!=zz)
        {
           RightOrWrang=0;
           theRespone=theRespone+"<p align=\"center\"><font color=\"#FF0000\">数据统计有错,可能是某个成员总时间计算有错!</font></p>";            
        }
    
        else
        {
            theRespone=theRespone+"<p align=\"center\"><font color=\"#000000\">总数计算成功!</font></p>";
                    
        }
     }
        //如果一切无误,则进行填表操作,将总数据填入班级时间数据汇总表中
        if(RightOrWrang==1)
        {
                try
                {
                aSetExcel=new setExcel(filename);
                }
                catch(Exception e2)
                {
                    RightOrWrang=0;
                    theRespone=theRespone+"<p align=\"center\"><font color=\"#FF0000\">命名方式不对,请检查后再提交!</font></p>";
                }
                aSetExcel.setMynumble(myNum);
                //传递配置文件中“路径信息”“开始时间”
                aSetExcel.setPathInfo(pathInfo);
                aSetExcel.setStartTime(startTime);
                //填表      
                aSetExcel.updateExcel();
                
                //如果填表失败则显示失败
             
                if(aSetExcel.getSucceed()==0)
                {
                    RightOrWrang=0;
                    theRespone=theRespone+"<p align=\"center\"><font color=\"#FF0000\">数据无误,但系统内总表正被打开导致无法填入汇总数据,请稍后再交!</font></p>";
                }
                else
                {
                  if(aSetExcel.getIsNotLate())
                   {
                        //正常提交
                        theRespone=theRespone+"<p align=\"center\"><font color=\"#000000\">正常提交完毕,请还回!</font></p>"; 
                   }
                   else
                   {
                        //晚交
                        theRespone=theRespone+"<p align=\"center\"><font color=\"#FF0000\">已经晚交,系统将会做记录!</font></p>"; 
                   }
                }

        }
        myworkbook.close();
    }
    //时间转换函数如将表格内的时间如13:10:00转换成整型数分钟如13×60+10+0;
   public int validate(String ss)
    {
        int i=ss.indexOf(":");
        int a=Integer.parseInt(ss.substring(0,i));       
        String ss2=ss.substring(i+1);
        int j=ss2.indexOf(":");
        int b=Integer.parseInt(ss2.substring(0,j));
        int c=Integer.parseInt(ss2.substring(j+1,5));
        return 60*a+b+c/60;               
    }   
    public int getRightOrWrang()
    {
        return RightOrWrang;
    }
    public String getTheRespone()
    {
        return theRespone;
    }
    public void setUrl(String s)
    {
        url=s;
    }
    public String getUrl()
    {
        return url;
    }
    public void setStartTime(String s)
    {
        startTime=s;
    }
    public String getStartTime()
    {
        return startTime;
    }
    public void setMyNum(String s)
    {
        myNum=s;
    }
    public String getMyNum()
    {
        return myNum;
    }
    public void setFileName(String s)
    {
        filename=s;
    }
    public String getFileName()
    {
        return filename;
    }
    
     public void setPathInfo(String s)
    {
        pathInfo=s;
    }
    public String getPathInfo()
    {
        return pathInfo;
    }
    public void setTheRespone()
    {
        theRespone="";
    }
    public void setZz()
    {
        zz=0;
    }
    public void setRightOrWrang()
    {
       RightOrWrang=1;
    }
  //  public static void main(String[] args)
 //   {
  //      doExcel a=new doExcel();
  //      a.doPost();
  //  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -