通过不懈的努力终于搞好了与预期结果符合的报告代码
首先创建用例
例如:

运行代码:
预期结果:

实际结果:与预期结果不符合,哪位大佬有代码传授一下啊,实在是不知道咋写了

<!--解析doc文档HWPFDocument-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
<!--pdf依赖 跟这个没关系可以也导入-->
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.4</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
代码:与预期结果不符合的代码
package com.znzdh.qitagongju;
import com.spire.doc.*;
import com.spire.doc.documents.VerticalAlignment;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import com.spire.doc.documents.DocumentObjectType;
import com.spire.doc.documents.Paragraph;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
import java.awt.*;
import java.io.File;
import java.io.FileOutputStream;
import java.nio.charset.Charset;
import java.util.List;
import java.util.Scanner;
public class Eworld {
public static void main(String[] args) {
try{
//urlexcel
String path="D:\\桌面\\Eworld1.xls";
//urlworld
String pathworld="D:\\桌面\\E1.docx";
//解析路径
Workbook workbook=Workbook.getWorkbook(new File(path));
//输入流
//FileOutputStream fos = new FileOutputStream(pathworld);
//创建Document对象,创建word文档
Document doc = new Document();
//获取第一张表
Sheet sheet = workbook.getSheet(0);
//循环获取第一行数据,因为默认第一行为标题行,我们可以从1开始循环,如果需要读取标题行,从0开始
//sheet.getRows(),获取总数行
for (int i = 1; i <sheet.getRows() ; i++) {
//获取第一行的第i行信息 sheet.getcell(列,行);下标从0开始
String name = sheet.getCell(0, i).getContents();
System.out.println("name:"+name);
//获取第二行的第i行信息
String miaoshu = sheet.getCell(1,i).getContents();
System.out.println("miaoshu:"+miaoshu);
//获取第三行的第i行信息
String buzhou = sheet.getCell(2,i).getContents();
System.out.println("buzhou:"+buzhou);
//获取第四行的第i行信息
String yuqi = sheet.getCell(3,i).getContents();
System.out.println("yuqi:"+yuqi);
//fos.write((name+"\n").getBytes());
String[] data={name};
String[] header={miaoshu,buzhou,yuqi};
Section sec = doc.addSection();
//添加表格
Table table2 = sec.addTable(true);
table2.resetCells(1, 1);
Table table = sec.addTable(true);
table.resetCells(1, 3);
//设置表格第一行作为表头,写入表头数组内容,并格式化表头数据
TableRow row = table.getRows().get(0);
TableRow row2 = table2.getRows().get(0);
for (int t = 0; t < data.length; t++) {
row2.getCells().get(t).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle);
Paragraph p = row2.getCells().get(t).addParagraph();
p.appendText(name+":");
for (int j = 0; j < header.length; j++) {
row.getCells().get(j).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle);
Paragraph k = row.getCells().get(j).addParagraph();
k.appendText(header[j]);
//保存文档
doc.saveToFile(pathworld, FileFormat.Docx_2013);
}
}
}
}catch (Exception e){
e.printStackTrace();
}
}
}
更换代码与预期结果符合,真是黄天不负有心人啊!!!
package com.znzdh.qitagongju;
import java.io.File;
import java.io.FileOutputStream;
import jxl.Sheet;
import jxl.Workbook;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTTitle;
import java.io.*;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFStyle;
public class Eworld2 {
public static void main(String[] args) {
try{
// 创建新的Word文档对象
XWPFDocument document = new XWPFDocument();
// 添加段落内容,也就是标题
XWPFParagraph p = document.createParagraph();
p.setStyle("标题4");//设置标题2
p.setFontAlignment(2);//字体对齐方式:1左对齐 2居中3右对齐
XWPFRun run = p.createRun();
run.setText("xxx测试报告");//添加标题
//urlexcel
String path="D:\\桌面\\Eworld1.xls";
//解析路径
Workbook workbook=Workbook.getWorkbook(new File(path));
//获取第一张表
Sheet sheet = workbook.getSheet(0);
//循环获取第一行数据,因为默认第一行为标题行,我们可以从1开始循环,如果需要读取标题行,从0开始
//sheet.getRows(),获取总数行
for (int i = 1; i <sheet.getRows() ; i++) {
//获取第一行的第i行信息 sheet.getcell(列,行);下标从0开始
String name = sheet.getCell(0, i).getContents();
System.out.println("标题::"+name);
//获取第二行的第i行信息
String miaoshu = sheet.getCell(1,i).getContents();
System.out.println("描述::"+miaoshu);
//获取第三行的第i行信息
String buzhou = sheet.getCell(2,i).getContents();
System.out.println("步骤:"+buzhou);
//获取第四行的第i行信息
String yuqi = sheet.getCell(3,i).getContents();
System.out.println("预期结果:"+yuqi);
System.out.println("===========================");
//将获取到每行的内容放到数组中
String data[]={name,miaoshu,buzhou,yuqi};
/*// 设置 5 级标题样式
XWPFStyle style = document.createStyle();
style.setName("五级标题");
style.setFontSize(14);
style.setFontName("Times New Roman");
*/
// 添加段落内容,也就是标题
XWPFParagraph paragraph1 = document.createParagraph();
paragraph1.setStyle("标题4");//设置标题2
paragraph1.setFontAlignment(1);//字体对齐方式:1左对齐 2居中3右对齐
XWPFRun run1 = paragraph1.createRun();
run1.addBreak();//换行
run1.setText(data[0]);//添加第一行段落文本
// 添加表格 1行3列
XWPFTable table = document.createTable(1,3);
// 设置表格的行高和列宽
table.setWidth(9000);// 设置列宽
table.getRow(0).getCell(0).setWidth("3000");//设置获取第一行1列设置宽度
table.getRow(0).getCell(1).setWidth("3000");//设置获取第一行2列设置宽度
table.getRow(0).getCell(2).setWidth("3000");//设置获取第一行3列设置宽度
int rowCount = 1;
int colCount = 3;
for (int a = 0; a < rowCount; a++) {
XWPFTableRow row = table.getRow(a);
if (row == null) {
row = table.createRow();
}
for (int j = 0; j < colCount; j++) {
XWPFTableCell cell = row.getCell(j);
if (cell == null) {
cell = row.addNewTableCell();
}
if (j==0){
XWPFParagraph cellPara = cell.getParagraphArray(0);
XWPFRun cellRun = cellPara.createRun();
cellRun.setText(data[1]);
}else if (j==1){
XWPFParagraph cellPara = cell.getParagraphArray(0);
XWPFRun cellRun = cellPara.createRun();
cellRun.setText(data[2]);
}else if (j==2){
XWPFParagraph cellPara = cell.getParagraphArray(0);
XWPFRun cellRun = cellPara.createRun();
cellRun.setText(data[3]);
}
}
}
//放测试截图
//放测试用例代码,一张完美的自动化测试报告就产生了
}
// 保存为Word文件
FileOutputStream outStream = new FileOutputStream("output.docx");
document.write(outStream);
outStream.close();
System.out.println("成功生成Word文件!");
}catch (Exception e){
e.printStackTrace();
}
}
}
预期结果截图:没错这就是我想要的结果

文章讲述了作者在处理与预期不符的代码时,寻求帮助并分享了使用ApachePOI库操作Word文档和解析Excel数据的过程,展示了如何读取和写入数据,以及创建表格和处理单元测试的情况。
2253

被折叠的 条评论
为什么被折叠?



