我在一个项目上工作,这是在ms word文档中写入ms access数据。当我多次运行此项目时,它会覆盖word文档,如下图所示。


第一次我运行这个项目时,一切都是正常的,但第二次它会覆盖第一个项目。我想如果我重启服务器或应用程序,问题就会解决。为此,我编写了以下代码
try {
Socket socket=new Socket("localhost",8080);
if(socket.isConnected())
{
socket.close();
System.out.println("Server closed");
}
Runtime.getRuntime().exec(System.getProperty("catalina.home")+"\\bin\\startup.bat");
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();但它并没有像我想要的那样工作。所以我需要你的帮助。
公共静态空header_footer(String SalesOrder,String类型)抛出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 = new FileInputStream(imgFile2);
/* FileReader fileReader = new FileReader(imgFile2);
BufferedReader bufferedReader = new BufferedReader(fileReader);*/
//InputStream pic = new BufferedInputStream(new FileInputStream(imgFile2));
// BufferedReader reader = new BufferedReader(new InputStreamReader(pic));
// Image jpg = Image.getInstance("/pages/jpg/bg-header.jpg");
/* URL imgLogoUrl = access.getClass().getProtectionDomain().getCodeSource().getLocation();
Image imgLogo= Image.getInstance(imgLogoUrl+"../../images/logo.JPG");
*/
InputStream pic = access_connection.class.getResourceAsStream("page1_header.png");
//InputStream pic = new URL(imgFile2).openStream();
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");
// headerFooterPolicy.getFirstPageHeader().clearHeaderFooter();
XWPFParagraph paragraph = header.createParagraph();
paragraph.setAlignment(ParagraphAlignment.CENTER);
XWPFRun run = paragraph.createRun();
InputStream a;
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();
try {
FileOutputStream input = new FileOutputStream(word_saveas_file+SalesOrder+"_"+type+"_Report.docx");
document.write(input);
input.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}这是我的页眉-页脚代码。这是其中一个被改写的。每次我创建不同的word文档时,因为SalesOrder参数每次都会改变,但它仍然会覆盖。
发布于 2019-11-22 16:06:59
尝试以编程方式启动批处理脚本:
添加以下代码:
try {
Runtime.getRuntime().exec("taskkill /F /IM java.exe");
System.exit(0);
} catch (Throwable e) {
Logger.handle(e);
} 以下是帮助您如何创建windows服务的链接:http://dotnetlearners.com/windowsservice/creating-first-windows-service
下面是如何通过c#查看您的服务代码源
protected override void OnStart(string[] args)
{
if (!File.Exists(fileLocation))
File.Create(fileLocation).Close();
File.AppendAllText(fileLocation, "Service started : " + DateTime.Now.ToString() + Environment.NewLine);
System.Diagnostics.Process.Start(@"C:\Program Files\Apache Software Foundation\Tomcat 7.0\bin\startup.exe");
OnStop();
}
protected override void OnStop()
{
File.AppendAllText(fileLocation, "Service stoped : " + DateTime.Now.ToString() + Environment.NewLine);
}然后在通过java关闭服务器后调用您的服务,就像这样。
try {
Runtime.getRuntime().exec("taskkill /F /IM java.exe");
Runtime.getRuntime().exec("net start servicename");
System.exit(0);
} catch (Throwable e) {
Logger.handle(e);
} https://stackoverflow.com/questions/58989144
复制相似问题