【已解决,一个beanshell问题】Typed variable declaration : Class: Workbook not found in namespace
需求
提升群小伙伴的需求是这样的:使用jmeter测试接口,接口需要导入excel,需要自动生成excel文件以及数据
问题
idea中可以自动生成excel文件以及数据
依赖
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.2</version> </dependency>
把相关依赖放到jmeter的lib/ext下后,把代码复制到beanshell,或者idea中maven项目打jar包放到jmeter的lib/ext目录下,都报错:
ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel. . . . '' : Typed variable declaration : Class: Workbook not found in namespace
ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel. . . . '' : Typed variable declaration : Class: Workbook not found in namespace
附:原始代码
//import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; import java.io.IOException; // 创建一个新的工作簿 Workbook workbook = new XSSFWorkbook(); // 创建一个新的工作表 Sheet sheet = workbook.createSheet("Sheet1"); // 创建新行 Row row = sheet.createRow(0); // 创建单元格样式 CellStyle style = workbook.createCellStyle(); // 给style添加水平居中对齐 style.setAlignment(HorizontalAlignment.CENTER); // ===设置字体样式=== // 创建字体对象 Font font = workbook.createFont(); // 字体加粗 font.setBold(true); // 设置字体大小 font.setFontHeightInPoints((short) 20); // 设置字体类型 font.setFontName("宋体"); // 给style添加字体样式 style.setFont(font); // 合并第二行的0-5列 Cell cell = row.createCell(0); // 给单元格设置内容 cell.setCellValue("供应商导入"); // 给单元格设置样式 cell.setCellStyle(style); sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 6)); // 创建单元格样式 CellStyle style2 = workbook.createCellStyle(); // ===设置字体样式=== // 创建字体对象 Font font2 = workbook.createFont(); // 字体加粗 font2.setBold(true); // 设置字体大小 font2.setFontHeightInPoints((short) 11); // 设置字体类型 font2.setFontName("宋体"); style2.setFont(font2); // 创建新行 Row row2 = sheet.createRow(1); Cell cell0 = row2.createCell(0); cell0.setCellStyle(style2); cell0.setCellValue("*供应商分类编码"); Cell cell1=row2.createCell(1); cell1.setCellStyle(style2); cell1.setCellValue("*供应商编码"); Cell cell2=row2.createCell(2); cell2.setCellStyle(style2); cell2.setCellValue("*供应商名称"); Cell cell3=row2.createCell(3); cell3.setCellStyle(style2); cell3.setCellValue("*供应商简称"); Cell cell4=row2.createCell(4); cell4.setCellStyle(style2); cell4.setCellValue("*助记码"); Cell cell5=row2.createCell(5); cell5.setCellStyle(style2); cell5.setCellValue("*分管部门编码"); Cell cell6=row2.createCell(6); cell6.setCellStyle(style2); cell6.setCellValue("税率"); for (int i = 0; i < 1; i++) { Row rowi = sheet.createRow(i+2); for (int j = 0; j < 7 ; j++) { if (j==6){ rowi.createCell(j).setCellValue(3); continue; } rowi.createCell(j).setCellValue("test"+j); } } // 保存工作簿到文件 String filename = "供应商导入模板.xlsx"; FileOutputStream fos = new FileOutputStream(filename); workbook.write(fos); fos.close(); System.out.println("工作簿已保存到文件:" + filename);
解决方案
问题一:报错找不到接口
ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.userm . . . '' : Typed variable declaration : Class: Workbook not found in namespace
类型改为类即可,比如:
将Workbook workbook = new XSSFWorkbook();
改为:XSSFWorkbook workbook = new XSSFWorkbook();
问题二:样式相关的类找不到
注释样式相关的,如:XSSFCellStyle style = workbook.createCellStyle();
问题三:依赖版本
Error invoking bsh method: eval Sourced file: inline evaluation of: ``import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.userm . . . '' : Method Invocation workbook.write
依赖版本改为:
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency>
结果
jmeter的bin下生成了文件
文件内容
__EOF__
![微信:ren168632201](https://files-cdn.cnblogs.com/files/uncleyong/wx.bmp)
本文作者:持之以恒(韧)
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!