java将excel中用例写到world中【搬代码】

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

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

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

 <!--解析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();
        }
    }

    }


预期结果截图:没错这就是我想要的结果
111

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值