有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

关于使用ApachePOI创建ms word文档的java重复页眉/页脚问题

我有一个创建ms word文档的项目。在这个word文档中,我想创建页眉/页脚。为此,我编写了以下代码

public static void header_footer(String SalesOrder,String type) throws InvalidFormatException, IOException
    {

        XWPFHeaderFooterPolicy headerFooterPolicy = document.getHeaderFooterPolicy();   

          if (headerFooterPolicy == null) 
              headerFooterPolicy = document.createHeaderFooterPolicy();

              XWPFHeader header = headerFooterPolicy.createHeader(XWPFHeaderFooterPolicy.DEFAULT);
              XWPFTable asd= header.createTable(1, 2);
              asd.setTableAlignment(TableRowAlign.LEFT);
              XWPFTableRow row;
              XWPFTableCell cell,cell2;
              CTHeight ht;
              CTTrPr trPr;
              CTTblWidth cellWidth;
              row= asd.getRow(0);
              trPr = row.getCtRow().addNewTrPr();
              ht = trPr.addNewTrHeight();
              ht.setVal(BigInteger.valueOf(-1070));         
              cell=row.getCell(0);        

              XWPFParagraph parag=document.createParagraph();
              parag = cell.getParagraphArray(0);
              XWPFRun r1=parag.createRun();


              InputStream pic = access_connection.class.getResourceAsStream("page1_header.png");


              r1.addPicture(pic, XWPFDocument.PICTURE_TYPE_PNG, imgFile2, Units.toEMU(160), Units.toEMU(55)); 


                cellWidth = cell.getCTTc().addNewTcPr().addNewTcW();            
                cellWidth.setW(BigInteger.valueOf(3500));
                cell2=row.getCell(1);
                cellWidth = cell2.getCTTc().addNewTcPr().addNewTcW();           
                cellWidth.setW(BigInteger.valueOf((short)20000));


            parag=cell2.getParagraphArray(0);
            parag.setVerticalAlignment(TextAlignment.CENTER);
            parag.setAlignment(ParagraphAlignment.CENTER);
            cell2.setVerticalAlignment(XWPFVertAlign.CENTER);
            XWPFRun r2=parag.createRun();
            r2.setFontSize(14);
            r2.setFontFamily("Calibri");
            r2.setText("TURKISH ENGINE CENTER SHOP VISIT REPORT");
            r2.addBreak();
            r2.setText("ESN "+SalesOrder.substring(1, 7)+"                         Istanbul,TURKEY");

            XWPFFooter footer = headerFooterPolicy.createFooter(XWPFHeaderFooterPolicy.DEFAULT);
            XWPFParagraph parag2= footer.createParagraph();
            XWPFRun run3=parag2.createRun();
            XWPFRun run4=parag2.createRun();
            run3.setFontFamily("Arial");
            run4.setFontFamily("Arial");
            run3.setBold(true);
            run4.setItalic(true);
            run3.setFontSize(8);
            run4.setFontSize(9);
            run3.setText("U.S. Export Classification: EAR ECCN 9E991");
            run3.addBreak();
            run4.setText("Printed by TEC Local EVM System");
            XWPFParagraph parag3= footer.createParagraph();
            XWPFRun run5=parag3.createRun();
            parag3.setAlignment(ParagraphAlignment.RIGHT);
            run5.setFontSize(7);
            run5.setFontFamily("Arial");
            run5.setText("Page ");
            run5.getCTR().addNewPgNum();

//          footer.setCommited(true);




        try {


                FileOutputStream input = new FileOutputStream(word_saveas_file+SalesOrder+"_"+type+"_Report.docx");

                document.write(input);
                input.close();  
//              input.flush();

        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

我正在运行我的项目。tomcat服务器上的jsp网页。当我第一次运行我的项目时,一切都正常运行。但当我第二次运行我的项目而不停止或重新启动tomcat服务器时,页眉/页脚会重复。我不明白为什么只重复页眉/页脚。我正在创建不同名称的ms word文档,但仍然存在此问题

public static void Start(String SalesOrder, String path,String type) throws SQLException, ClassNotFoundException {

      baslik[0]="ATA";  
      baslik[1]="LID";
      baslik[2]="PN";
      baslik[3]="QPE";
      baslik[4]="SV";
      baslik[5]="IS";
      baslik[6]="RS";
      baslik[7]="REP";
      baslik[8]="Defect";

      baslik2[0]="PN";
      baslik2[1]="NEW";
      baslik2[2]="REP";
      baslik2[3]="SV";
      baslik2[4]="Information Only";

     try {
        start_page_1(SalesOrder,path,type);
    } catch (InvalidFormatException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (URISyntaxException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
         try {
            start_page_2(SalesOrder,type);
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        try {
            header_footer(SalesOrder,type);
        } catch (InvalidFormatException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        eng_general(SalesOrder);
        oil_sys(SalesOrder);
        GroupName(1);
        partoff(SalesOrder,type);

    //baglanti= DriverManager.getConnection("jdbc:ucanaccess://"+db_file,db_username,db_password);
      //sorgu=baglanti.createStatement();
     //deneme=sorgu.executeQuery("SELECT * FROM TableRun");
        System.out.println("Process Completed");


    }
public static void Start_PDM(String SalesOrder, String path,String type) throws SQLException, ClassNotFoundException, IOException {

      baslik[0]="ATA";  
      baslik[1]="LID";
      baslik[2]="PN";
      baslik[3]="QPE";
      baslik[4]="SV";
      baslik[5]="IS";
      baslik[6]="RS";
      baslik[7]="REP";
      baslik[8]="Defect";

      baslik2[0]="PN";
      baslik2[1]="NEW";
      baslik2[2]="REP";
      baslik2[3]="SV";
      baslik2[4]="Information Only";

     try {
        start_page_1(SalesOrder,path,type);
    } catch (InvalidFormatException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (URISyntaxException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
         try {
            start_page_2(SalesOrder,type);
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        try {
            header_footer(SalesOrder,type);
        } catch (InvalidFormatException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        GroupName(1);
        partoff(SalesOrder,type);
        /*try {
            Runtime.getRuntime().exec("taskkill /F /IM java.exe");
            Runtime.getRuntime().exec("net start java");
            System.exit(0);
        } catch (Throwable e) {

        }   */
        baglanti.close();

    //baglanti= DriverManager.getConnection("jdbc:ucanaccess://"+db_file,db_username,db_password);
      //sorgu=baglanti.createStatement();
     //deneme=sorgu.executeQuery("SELECT * FROM TableRun");
        System.out.println("Process Completed");


    }

我使用第一种方法创建word文档,方法是eng_generaloil_sys。在第二种方法中,我创建的word文档没有eng_generaloil_sys


共 (0) 个答案