java poi 复制 页眉_java - 使用apache poi创建ms Word文档时出现重复的页眉/页脚问题 - 堆栈内存溢出...

在使用Apache POI创建MS Word文档时遇到页眉/页脚重复的问题。当项目从Tomcat服务器的.jsp页面运行且不重启服务器时,第二次运行会导致页眉/页脚重复。尽管文件名不同,问题依然存在。代码示例展示了如何创建页眉和页脚,包括添加图片和文本。解决方案未在提供的代码中显示。
摘要由CSDN通过智能技术生成

我有一个创建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");

}

我正在使用eng_general和oil_sys方法创建Word文档的第一种方法。 在第二种方法中,我将创建没有eng_general和oil_sys word文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值