2017-10-26 29 views
0

は以下の.xls/.xlsx形式のファイルをPDFファイルに変換するためのコードである存在エラーと言って--->オリジンサーバがターゲットリソースの現在の表現が見つからないか、その1を開示して喜んではありませんでしたこと

私はリンクに http://localhost:8080/examples/servlets/servlet/xlstopdfservlet

をヒットしようとすると、私は次のエラーを取得する The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

ExcelWord2PDF_HTML.html

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>XLS to PDF - Servlet Example</title> 
</head> 
<body > 
<h1><a>HTML Form to Capture user Uploaded XLS File</a></h1> 
<form id="form_533088" class="appnitro" enctype="multipart/form-data" 
method="post" action="/examples/servlets/servlet/xlstopdfservlet"> 
<ul > 
<li id="li_1" > 
<label for="element_1">Select an Excel File to Convert </label> 
<input id="element_1" name="element_1" type="file"/> 
</li> 
<li id="li_2" > 
<label for="element_2">Excel Input Format </label> 
<select class="element select medium" id="element_2" name="element_2"> 
<option value="" selected="selected"></option> 
<option value="1" >XLS</option> 
<option value="2" >XLSX</option> 
</select> 
</li>   
<li>     
<input id="saveForm" class="button_text" type="submit" name="submit" 
value="Submit" /> 
</li> 
</ul> 
</form> 
</body> 
</html> 
まず10

xlstopdfservlet.java

package com.infy.accelearte.excelword2pdf; 


public class xlstopdfservlet extends HttpServlet { 

public void doGet(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException { 
     OutputStream out = response.getOutputStream(); 

     try { 
       //set InputStream object that accepts uploaded file 
       InputStream filecontent=null;    
       List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request); 
       //assume default input type as XLS 
       String inputtype="1"; 
       for (FileItem item : items) { 
         if (item.isFormField()) {        
           String fieldname = item.getFieldName(); 
           if (fieldname.equals("element_2")) { 
           //identifies type of input required 
           inputtype = item.getString(); 
           } 
           //the value can be 1 for XLS conversion, 2 for XLSX conversion 

         } else { 
         //The uploaded file is processed in this section 
         String fieldname = item.getFieldName(); 
         String filename = FilenameUtils.getName(item.getName()); 
         filecontent = item.getInputStream(); 
         //Uploaded Excel file is obtained into Inputstream object at this step     
         } 
       } 
     //we have obtained the user uploaded Excel file till this step. 
     // we also know the output is a PDF. 
     // we can now write the servlet code that converts the file. 
     HSSFWorkbook my_xls_workbook=null; 
     HSSFSheet my_worksheet=null; 
     XSSFWorkbook my_xlsx_workbook=null; 
     XSSFSheet my_worksheet_xlsx=null; 

     //set the output format i.e. pdf   
     response.setContentType("application/pdf"); 
     Document document = new Document(); 
     PdfWriter.getInstance(document, out); 
     document.open(); 
     //we create a PDF table that can hold XLS data 
     //assumption is excel sheet is holding two columns only. 
     //you can make this dynamic 
     PdfPTable my_table = new PdfPTable(2); 
     PdfPCell table_cell; 
     //the object below loops through the excel document rows 
     Iterator<Row> rowIterator = null; 
     //read xls 

     if (inputtype.equals("1")){ 
     my_xls_workbook = new HSSFWorkbook(filecontent); 
     my_worksheet = my_xls_workbook.getSheetAt(0); 
     rowIterator=my_worksheet.iterator();  
     } 

     //read xlsx 
     if (inputtype.equals("2")){ 
     my_xlsx_workbook = new XSSFWorkbook(filecontent); 
     my_worksheet_xlsx = my_xlsx_workbook.getSheetAt(0); 
     rowIterator=my_worksheet_xlsx.iterator();  
     } 
     while(rowIterator.hasNext()) { 
         Row row = rowIterator.next(); 
         Iterator<Cell> cellIterator = row.cellIterator(); 
           while(cellIterator.hasNext()) { 
             Cell cell = cellIterator.next(); //Fetch CELL 
             switch(cell.getCellType()) { //Identify CELL type 

             case Cell.CELL_TYPE_STRING: 
               //Push the data from Excel to PDF Cell 
               table_cell=new PdfPCell(new Phrase(cell.getStringCellValue()));             
               my_table.addCell(table_cell); 
               break; 
             } 
             //next line 
           } 

       } 
     // add table to PDF document   
     document.add(my_table);  
     //close document..returns output to server 
     document.close(); 

     } 
     catch (Exception e) { 
       System.err.println(e.toString()); /* Throw exceptions to log files */ 
     } 
     finally { 
       out.close();/* Close the output stream */ 
     } 

} 
public void doPost(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException { 
    doGet(request, response); 
} 

web.xmlの

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 
    <display-name>ExcelWord_PDF</display-name> 
    <welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
    <welcome-file>default.html</welcome-file> 
    <welcome-file>default.htm</welcome-file> 
    <welcome-file>default.jsp</welcome-file> 
    </welcome-file-list> 
    <servlet> 
     <servlet-name>xlstopdfservlet</servlet-name> 
     <servlet-class>com.infy.accelerate.excelword2pdf.xlstopdfservlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>xlstopdfservlet</servlet-name> 
     <url-pattern>/servlets/servlet/xlstopdfservlet</url-pattern> 
    </servlet-mapping> 
</web-app> 
+0

あなたのURLに/ examplesがあるのはなぜですか? – Nathan

+0

index.htmlnにアクセスしようとすると、どのURLにヒットしますか? http:// localhost:8080/examplesまたはhttp:// localhost:8080? – Nathan

+0

@Nathanサーブレットの.classファイルを apache-tomcat-6.0.36 \ webapps \ examples \ WEB-INF \ classes に、.htmlファイルを にコピーしました。apache-tomcat-6.0.36 \ webapps \ examples \ servlets \ ExcelWord_To_PDF_HTMLパス。だから私は\ examplesを使用しています –

答えて

0

、あなたはサーブレット、ないdoGet()でフォームの使用にdoPost()方法を投稿してください。その後、あなたのURLから/exampleを削除してみてください。

+0

doPost()からdoGet()を呼び出しています。削除しようとしました/ example、しかしそれは仕事がうまくいきません:-( –

関連する問題