jxl的使用

来源:互联网 发布:十三水组合推荐算法 编辑:程序博客网 时间:2024/05/01 04:57

                这两星期姚哥让我做实现一个二进制生成文件,输入xls文件:每个条目是一项正则表达式,标准参照regex文档;要求每一项正则表达式,转化为对应二进制串,主要是里面的转义字符转化;输出文件格式:二进制数据长度(4个字节)| 二进制数据 | 下一项长度 | 下一项数据 ... ... 1.首先这个项目我选择使用java开发,选择使用了jxl.jar文件(这个文件里面带的函数可以读取到excel单元格的内容)。=======================================================================

 

          我的工作是首先是在excel中输入正则表达式,正则表达式要满足正则表达式的语法规则。而我们做的DFA,要求扩展字符集的范围为(0~255)所以我所定义的正则表达式为 1.可显示的字符"a"就输字符"a"。或写字符对应的十六进制"/0x61". 2.对于不可显示的字符就写其对应的十六进制如 "/0xff"等等。

 

下面是我的代码:

 

 
import java.io.*;
import jxl.*;
public class AppTest2
{

//Calculation excel within a cell the number of regular expressions

  int  countNum (String s)
 {
  char[] ch = s.toCharArray();
  int contentLength = ch.length;
  int num = 0;
  for(int k=0;k<contentLength; k++)
  {
    if(ch[k] == 92)   
           {
            k++;
            if(k < contentLength)
            {
             if(ch[k] == 48)
             {
              k++;
              if(ch[k] == 120)
              {
               k++;
               k++;
               num++;
              }
             }
             else
             {
                k--;
                num++; 
             } 
            }
            else
            {
             num++;
            }
            
            
           }
           else
           {
            //k--;
            num++;
           }
  }
   return num;
 }
 

    //put the excel cell content to the file
  void outputTotxt()
  {
   try
   {
   Workbook book= Workbook.getWorkbook(new File("inputRE.xls"));
   Sheet sheet=book.getSheet(0);//Get the first worksheet object
   Cell cell;
   int totalRows = sheet.getRows();//Get the number of rows
  // System.out.println( "  "+totalRows);
   int totalColumns = sheet.getColumns();//Get the number of columns
  // System.out.println( "  "+totalColumns);
   File myFilePath = new File("F://outputRE.txt");
   if (!myFilePath.exists()) {  
       myFilePath.createNewFile();  
   }  

   FileOutputStream resultFile = new FileOutputStream(myFilePath);
   PrintStream  myFile = new PrintStream (resultFile); 

   for(int i=0;i<totalRows ;i++ )
    {
    for(int j=0;j<totalColumns ;j++ )
    {
     cell = sheet.getCell(j, i);
     String content = cell.getContents();//Enter the cell contents to the file
       char[] contentByte = content.toCharArray();//Enter the cell contents length to the file
        int contentLength =  contentByte.length;
      // System.out.println( "  "+content);
        int temp = 0;
        int num =0;
    
      myFile.write(countNum(content));
    
        for(int k=0;k<contentLength; )
        {
            if(contentByte[k] == 92)   
            {
             k++;
             
             if(contentByte[k] == 48)
             {
              k++;
              if(contentByte[k] == 120)
              {
               k++;
                switch(contentByte[k])
               {
               case '0' :
                num = 16*0;
                break;
               case '1' :
                num = 16*1;
                break;
               case '2' :
                num = 16*2;
                break;
               case '3' :
                num = 16*3;
                break;
               case '4' :
                num = 16*4;
                break;
               case '5' :
                num = 16*5;
                break;
               case '6' :
                num = 16*6;
                break;
               case '7' :
                num = 16*7;
                break;
               case '8' :
                num = 16*8;
                break;
               case '9' :
                num = 16*9;
                break;
               case 'a' :
                num = 16*10;
                break;
               case 'b' :
                num = 16*11;
                break;
               case 'c' :
                num = 16*12;
                break;
               case 'd' :
                num = 16*13;
                break;
               case 'e' :
                num = 16*14;
                break;
               case 'f' :
                num = 16*15;
                break;
              default :
                
               break;
               }
               k++;
               switch(contentByte[k])
               {
               case '0' :
                num = 0+ num;
                break;
               case '1' :
                num = 1+ num;
                break;
               case '2' :
                num = 2+ num;
                break;
               case '3' :
                num = 3+ num;
                break;
               case '4' :
                num = 4+ num;
                break;
               case '5' :
                num = 5+ num;
                break;
               case '6' :
                num = 6+ num;
                break;
               case '7' :
                num = 7+ num;
                break;
               case '8' :
                num = 8+ num;
                break;
               case '9' :
                num = 9+ num;
                break;
               case 'a' :
                num = 10+ num;
                break;
               case 'b' :
                num = 11+ num;
                break;
               case 'c' :
                num = 12+ num;
                break;
               case 'd' :
                num = 13+ num;
                break;
               case 'e' :
                num = 14+ num;
                break;
               case 'f' :
                num = 15+ num;
                break;
              default :
                 break;
               }
              
             myFile.write(num);
             k++;
          
              }
             }
             else
             {
              k--;
              myFile.write(contentByte[k]);
              k++;
              myFile.write(contentByte[k]);
              k++;
             }
             
            }
            else
            {
             myFile.write(contentByte[k]); 
             k++;
            }
         
            
        }
     
    }
  // System.out.println();
    }
   myFile.close();  
   resultFile.close();  
   
   book.close();
   }catch(Exception e)
   {
   System.out.println("the input excel file has error!"+" ");
   }
   } 
 
 
public static void main(String args[])
 {
  AppTest2 test = new AppTest2();
  test.outputTotxt();
 } 
}

原创粉丝点击