2017-08-28 7 views
0

ブラウズボタンで選択されたExcelのファイルパスをファイルパス文字列変数に取得する方法。私はそれを下記のように優れたものにしたいと思っています。私はそれを正しくしていますか?それともあなたがそのように試みることができる私は、このコードでjspでExcelを読む方法

<!DOCTYPE html> 
    <html> 
    <body> 
    <form class="form-group" method="post"> 

    <label class="control-label">Select File</label> 
    <input type="file" name="file" id="file"> 

    </body> 
    </html> 

    <% 

    String filename = ""; 
    //how to get the full filepath here from browse button 
    //so that i can read the excel 
    if (filename != null && !filename.equals("")) { 

      FileInputStream fs = new FileInputStream(filename); 
      XSSFWorkbook wb = new XSSFWorkbook(fs); 
      XSSFSheet sheet = wb.getSheetAt(0); 
      int rows = sheet.getPhysicalNumberOfRows(); 
      for (int r = 1; r < rows; r++) { 
        XSSFRow row = sheet.getRow(r); 
         if (row != null) { 
         //reading excel is done 
          } 
       } 
    } 


    %> 

答えて

0

を変更する必要は何があります...私は、Apache POIを使用していた

5 import java.io.*; 
6 import java.util.*; 
7 
8 public class importExcel 
9 { 
10 
11  public static void main(String[] args) throws Exception 
12  { 
13   
14   createWorkbook("excel-poi.xls"); 
15   
16   readWorkbook("excel-poi.xls"); 
17   
18  } 
19 
20  private static void createWorkbook(String filename) throws Exception 
21  { 
22   
23   HSSFWorkbook wb = new HSSFWorkbook(); 
24   
25   HSSFSheet sheet = wb.createSheet("mySheet"); 
26 
27   sheet.setZoom(2, 1); 
28   
29   HSSFFont font = wb.createFont(); 
30   font.setFontHeightInPoints((short) 18); 
31   font.setFontName("Arial"); 
32   font.setItalic(true); 
33   
34   HSSFCellStyle style = wb.createCellStyle(); 
35   style.setFont(font); 
36   
37   for (int rownum = 0; rownum < 5; rownum++) 
38   { 
39    HSSFRow row = sheet.createRow(rownum); 
40    for (short cellIndex = 0; cellIndex < 5; cellIndex++) 
41    { 
42     HSSFCell cell = row.createCell(cellIndex); 
43     cell.setCellStyle(style); 
44     cell.setCellValue(cellIndex + (rownum * 10)); 
45    } 
46   } 
47   
48   FileOutputStream fos = null; 
49   
50   fos = new FileOutputStream("hello-poi.xls"); 
51   
52   wb.write(fos); 
53   
54   fos.flush(); 
55   
56   fos.close(); 
57   
58  } 
59 
60  private static void readWorkbook(String filename) throws Exception 
61  { 
62   
63   InputStream input = new FileInputStream(filename); 
64   
65   HSSFWorkbook wb = new HSSFWorkbook(input); 
66   
67   for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++) 
68   { 
69    HSSFSheet sheet = wb.getSheetAt(sheetIndex); 
70    Iterator rowIter = sheet.rowIterator(); 
71    while (rowIter.hasNext()) 
72    { 
73     HSSFRow row = (HSSFRow) rowIter.next(); 
74     Iterator cellIter = row.cellIterator(); 
75     while (cellIter.hasNext()) 
76     { 
77      HSSFCell cell = (HSSFCell) cellIter.next(); 
78      printCellValue(cell); 
79     } 
80    } 
81   } 
82   
83   input.close(); 
84  } 
85   
86 
87  private static void printCellValue(HSSFCell c) 
88  { 
89   
90   int cellType = c.getCellType(); 
91   
92   if (cellType == HSSFCell.CELL_TYPE_BOOLEAN) 
93   { 
94    System.out.println(c.getBooleanCellValue()); 
95   } 
96   else if (cellType == HSSFCell.CELL_TYPE_STRING) 
97   { 
98    System.out.println(c.getRichStringCellValue().getString()); 
99   } 
100   else if (cellType == HSSFCell.CELL_TYPE_FORMULA) 
101   { 
102    System.out.println(c.getCellFormula()); 
103   } 
104   else if (cellType == HSSFCell.CELL_TYPE_NUMERIC) 
105   { 
106    System.out.println(c.getNumericCellValue()); 
107   } 
108   else if (cellType == HSSFCell.CELL_TYPE_ERROR) 
109   { 
110    System.out.println(c.getErrorCellValue()); 
111   } 
112  } 
113 } 

。もしあなたがそれについて知っていなければ.. 記事を読む。それは本当に簡単で便利です。 https://www.mkyong.com/java/apache-poi-reading-and-writing-excel-file-in-java/ まだお知らせしていない場合は、お知らせください。

+0

エクセル読み込み部同様のコードを使用しています。しかし、私はファイルパスの変数を直接参照することができません。パスが利用できる場合は、Webアプリケーションから直接読み取ることができますか?各セルを読んだ後、私は各セルをmysql dbに保存しています。最初にサーバーにExcelをアップロードしてから、ハードコードされたパスから読み込む必要がありますか? – ViRaPa

+0

WebアプリでユーザーPCからExcelファイルを読みたい。セル単位でセルを読み取り、セル値をmysql dbに挿入することは可能ですか?または、まずファイルをサーバーにアップロードしてから読み込む必要がありますか?(JSPはWebアプリケーションを構築するために使用されます) – ViRaPa

+0

はい、ファイルをサーバーにアップロードする必要があります。その後、あなたは読むことができます。[ViRaPa](https://stackoverflow.com/users/7912522/virapa) –

0

以下のコードを使用して、ファイルをサーバーにアップロードしています。それは適切ですか?コード内のパス "d:/ new"は、サーバーパスまたはクライアントPCパスです。どこでもクライアントのPCパスを指定する必要がありますか。または、参照ボタンをクリックしてファイルを選択している間、直接パスを取得しますか?

index.html 
        <html> 
        <body> 
        <form action="go" method="post" enctype="multipart/form-data"> 
        Select File:<input type="file" name="fname"/><br/> 
        <input type="submit" value="upload"/> 
        </form> 
        </body> 
        </html> 


       UploadServlet.java 


       import java.io.*; 
       import javax.servlet.ServletException; 
       import javax.servlet.http.*; 
       import com.oreilly.servlet.MultipartRequest; 

       public class UploadServlet extends HttpServlet { 

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

       response.setContentType("text/html"); 
       PrintWriter out = response.getWriter(); 

       MultipartRequest m=new MultipartRequest(request,"d:/new"); 
       out.print("successfully uploaded"); 
       } 
       } 

    web.xml 

    <web-app> 

    <servlet> 
    <servlet-name>UploadServlet</servlet-name> 
    <servlet-class>UploadServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>UploadServlet</servlet-name> 
    <url-pattern>/go</url-pattern> 
    </servlet-mapping> 

    </web-app> 
関連する問題