LoadRunner读写excel

上一篇 / 下一篇  2012-12-28 23:24:43 / 个人分类:LoadRunner

最近测试遇到一个麻烦的问题,需要测试一个批量处理的功能,该功能看上去很简单,上传一个excel文件,服务处理excel中的数据,但问题是:excel中有一个序号,每次上传必须不一样。用C来处理excel,这个有点难度,网上一时也找不到现成的例子。那么我们就转换一下思路,用java vuser来实现。

为了保证读写文件不冲突,我们首先要做的就是为每个vuser分配一下文件,先在参数列表中建立一个参数VUserID,参数类型为:Vuser ID,参数宽度定位3位(根据实际需要调整,我们做性能测试的VUuser不会达到999个),上传的文件名定为:<VUserID>.xls(<VUserID>表示要根据VuserID做替换)。因为不确定会存在多少个Vuser,那么我们建一个模板文件,在初始化的时候判断一下是不是有该Vuser对应的文件,没有则将模板拷贝一份,命名为:<VUserID>.xls。每次需要变动的参数是excel文件中第1行第3列的序号。我们用时间+随机数的方式来产生一个序号。下面是实现的代码。

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;
import java.util.Random;
import java.text.SimpleDateFormat;

import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

import lrapi.lr;

public class Actions
{
    public int init() throws Throwable {
            File f = new File("d:\\lr\\<VUserID>.xls");
        if (!f.exists()){
        copyFile(new File("d:\\lr\\模板.xls"),f);
        }
        return 0;
    }//end of init

    public int action() throws Throwable {
        FileInputStream fis = null;
        try{
        fis = new FileInputStream("d:\\lr\\<VUserID>.xls");
        POIFSFileSystem fs = new POIFSFileSystem(fis);
        HSSFWorkbook wb = new HSSFWorkbook(fs);        
        HSSFSheet sheet = wb.getSheetAt(0);
        HSSFRow celles =  sheet.getRow(0);
        Random random = new Random();
        celles.getCell(3).setCellValue("LR" + 
            new SimpleDateFormat("yyyyMMddHHmmss").format(new java.util.Date())
                        + Math.abs(random.nextLong())%1000000000
                         );
        OutputStream fos = new FileOutputStream("d:\\lr\\<VUserID>.xls");
        wb.write(fos);
        fis.close();
        }
        catch(java.io.IOException ex){
        ex.printStackTrace();
        try {
            fis.close();
        }catch (IOException ex1) {
                ex1.printStackTrace();

                }
            }
        return 0;
    }//end of action

    public int end() throws Throwable {
        return 0;
    }//end of end

          public void copyFile(File sourceFile, File targetFile) throws IOException {
      BufferedInputStream inBuff = null;
      BufferedOutputStream utBuff = null;
      try {
          // 新建文件输入流并对它进行缓冲
          inBuff = new BufferedInputStream(new FileInputStream(sourceFile));

          // 新建文件输出流并对它进行缓冲
          utBuff = new BufferedOutputStream(new FileOutputStream(targetFile));

          // 缓冲数组
          byte[] b = new byte[1024 * 5];
          int len;
          while ((len = inBuff.read(b)) != -1) {
              outBuff.write(b, 0, len);
          }
          // 刷新此缓冲的输出流
          outBuff.flush();
      } finally {
          // 关闭流
          if (inBuff != null)
              inBuff.close();
          if (outBuff != null)
              outBuff.close();
      }
  }
}
 


TAG:

 

评分:0

我来说两句

我的栏目

日历

« 2024-04-28  
 123456
78910111213
14151617181920
21222324252627
282930    

我的存档

数据统计

  • 访问量: 17268
  • 日志数: 9
  • 建立时间: 2012-12-28
  • 更新时间: 2012-12-29

RSS订阅

Open Toolbar