• 締切済み

クライアントのEXCELファイルの読み込み

(1)Webページ上の参照ボタンを押すとファイル選択のダイアログが表示 される。 (2)ダイアログでファイルを選択しアップロードボタンを押すと選択されたEXCELファイルを読み込みデータベースに登録。 という流れのプログラムを作成しています。 ECLIPSE(クライアント)で開発していた時は下記のプログラムでクライアントのEXCELシートが読めていたのですが、サーバ側にプログラムを移行しクライアントのファイルを選択してもファイルが見つかりませんとのエラーメッセージが出力されます。(サーバ側を探しにいっているみたいです。) クライアントのEXCELデータを読み込むにはどのようにすればいいのでしょうか?。 アドバイスよろしくお願いします。 (JSP) <head> <%@ include file="html-head.jsp" %> <script type="text/javascript"> function OpenFile() { if (document.forms(0).fopen.value == ", "){ alert("ファイルが選択されていません。"); }else{ document.forms(0).action = "TEST!read.action"; document.forms(0).submit(); } } </script> </head> <body onload> <%@ include file="HeaderTitle.jsp" %> <div class="navigation" align="right"> <originalJK:CommonLinkTag mode="2" /><br> </div> <br> <s:form> <table width="100%"> <tr> <td> <INPUT type=file name="fopen"> </td> </tr> </table> <table width="100%"> <tr> <td> <INPUT type=button value="EXCELアップロード" onclick= OpenFile() > </td> </tr> </table> (JAVA) int count = 1; String ayyyy = DateUtils.format(DateUtils.now()); String[] strYyyy = ayyyy.split("/"); String aYy = strYyyy[0]; String aMm = strYyyy[1]; String Fname = aFopen; DbUtils vDb = new DbUtils(); //ファイル名チェック if ((aFopen.equals(", ")) || (aFopen.equals(""))){ } } try { // DBコネクションオープン vDb.open(); ABCADao vDao = new ABCDao(vDb); int vCount = 0; //データ存在チェック vCount = vDao.dbCntLine(); // (8)PATH名を除くファイル名のみを取得 String Fname1=(new File(Fname)).getName(); String[] strFname = Fname.split(","); String Fname2 = strFname[0]; // Excelファイルの読み込み FileInputStream fis = new FileInputStream(Fname2); POIFSFileSystem fs = new POIFSFileSystem(fis); // ワークブック・オブジェクトの取得 HSSFWorkbook wb = new HSSFWorkbook(fs); // 総ワークシート数の取得 int sheets = wb.getNumberOfSheets(); // ワークシートごとに、データを取得 int idx = 0; for (int sheetIdx = 0; sheetIdx < sheets; sheetIdx++ ) { // ワークシートを表すオブジェクトの取得 (1) HSSFSheet sheet = wb.getSheetAt(sheetIdx);

  • Java
  • 回答数1
  • ありがとう数1

みんなの回答

回答No.1

提示されたコードが断片過ぎだけど、 とりあえずファイルをアップロードしたいなら普通のformではできません。 formの属性「enctype」に「multipart/form-data」を指定します。 またサーバ側のJavaでも普通のURL引数として値を取得できません。 「java ファイルアップロード」 で検索すればわかると思います。 ファイルアップロードの処理を簡単にするライブラリがあり、 そのライブラリの説明が http://www.javaroad.jp/servletjsp/sj_servlet12.htmhttp://www.atmarkit.co.jp/fjava/javatips/106jakarta018.html にありますので見てみてはいかかでしょうか。

kouchan_s
質問者

お礼

ありがとうございました。

関連するQ&A

  • struts2 ファイル アップロード

    今、ファイルのアップロードのプログラム開発を行なっておりますが アップロードのボタンを押すとHTTPステータス500のエラーで実行ができません。 詳しい方、間違っている箇所のご指摘宜しくお願い致します。 プログラムは以下の通りです。(JAVAは一部削除しています) (JSP) <%@ page contentType="text/html; charset=UTF-8" %> <%@ page pageEncoding="Windows-31J" %> <%@taglib prefix="s" uri="/struts-tags" %> <%@taglib prefix="original" uri="/original-tags" %> <%@taglib prefix="originalJK" uri="/original-JK-tags" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> %@ include file="html-head.jsp" %> <script type="text/javascript"> </script> </head> <body onload> <%@ include file="HeaderTitle.jsp" %> <div class="navigation" align="right"> <originalJK:CommonLinkTag mode="2" /><br> </div> <br> <s:form enctype="multipart/form-data"> <table width="100%"> <tr> <td> <INPUT type=file name="upload"> </td> </tr> </table> <table width="100%"> <tr> <td> <s:submit value="EXCELアップロード" cssClass="form_button" action="tEST11A" method="doUpload" onclick="return confirm('アップロードしてよろしいですか。');"/> </td> </tr> </table> </s:form> </body> <html> (JAVA) @ParentPackage(value = "Original") @Results({ @Result(name = "success", value = "jsp/TEST11A.jsp"), @Result(name = "failure", value = "jsp/TEST11A.jsp") }) public class TEST11AAction extends SuperAction { private String aBtnUpdateMsg = ""; private File upload; private String uploadContentType; private String uploadFileName; public String execute() throws Exception { return "success"; } public String doUpload() throws Exception { try { // DBコネクションオープン vDb.open(); TEST11ADao vDao = new TEST11ADao(vDb); int vCount = 0; //データ存在チェック vCount = vDao.dbCntLine(); FileInputStream fis = new FileInputStream(upload); POIFSFileSystem fs = new POIFSFileSystem(fis); // ワークブック・オブジェクトの取得 HSSFWorkbook wb = new HSSFWorkbook(fs); // 総ワークシート数の取得 int sheets = wb.getNumberOfSheets(); // ワークシートごとに、データを取得 int idx = 0; for (int sheetIdx = 0; sheetIdx < sheets; sheetIdx++ ) { //コミット vDb.commit(); } finally { // DBクローズ vDb.close(); } return "success"; } public File getUpload() { return upload; } public void setUpload(File upload) { this.upload = upload; } public String getUploadContentType() { return uploadContentType; } public void setUploadContentType(String uploadContentType) { this.uploadContentType = uploadContentType; } public String getUploadFileName() { return uploadFileName; } public void setUploadFileName(String uploadFileName) { this.uploadFileName = uploadFileName; }

  • ExcelファイルからHTMLファイルを自動で作成

    種類   今日の売上   総売上 みかん     5       15 りんご     6        9 すいか     1        3 のようなExcelファイルがあります。 これをWeb上に表示するため、以下のようなHTMLファイルにしています。(簡単にしてありますが) <TABLE><TR> <TD>種類</TD> <TD>今日の売上</TD> <TD>総売上</TD> </TR><TR> <TD>みかん</TD> <TD>5</TD> <TD>15</TD> </TR><TR> <TD>りんご</TD> <TD>6</TD> <TD>9</TD> </TR><TR> <TD>すいか</TD> <TD>1</TD> <TD>3</TD> </TR></TABLE> これを毎日更新しているのですが、自動でできないかなぁと思いまして…。 VBAでこれらのことをボタン一つで行うようなことはできるでしょうか? (表をみて→HTMLファイルに変換) 例えば種類をHTMLファイルに変換するのなら "<TD>" & Syurui & "</TD>" ですよね? でもこれを1行ずつに行っていくとそれをまたまとめなくてはならなくて…。 一度でHTMLファイルを作成するような方法はありますか?

  • HTMLで外部ファイルの読み込み

    HTMLの表が存在するときに、その表の中に入る文字列を 別のファイル(テキストやHTML)で外部から読み込んで表示する方法について教えてください。まったくの素人です。。。 <html> <table border="1"> <tr> <th>A</th><th>B</th><th>C</th><th>D</th><th>E</th> </tr> </thead> ーーーーーーこの中が外部ファイルの記述ーーーーーーー <tr> <td>AAAAAAA</td> <td>BBBBBBB</td> <td>CCCCCCC</td> <td>DDDDDDD</td> <td>EEEEEEE</td> </tr> <tr> <td>A'A'A'A'A'</td> <td>B'B'B'B'B'</td> <td>C'C'C'C'C'</td> <td>D'D'D'D'D'</td> <td>E'E'E'E'E'</td> </tr> ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー </table> </body> </html>

  • JSPとjavaの問題

    ResultSet rs = db.getResultSet("SELECT * FROM SHAINLIST "); ArrayList list = new ArrayList(); while(rs.next()) { int state = rs.getInt("attendance"); list.add(new Integer(state)); } int[] in = new int[list.size()]; for (int i = 0; i < list.size(); i++) { in[i] = ((Integer)list.get(i)).intValue(); } %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSPでDB接続</title> </head> <body> <table> <tr><td>欠席</td><td>><%= countNum(-1, in) %></td></tr> <tr><td>未定</td><td><%= countNum(-1, in) %></td></tr> <tr><td>出席</td><td><%= countNum(-1, in) %></td></tr> </table> 以下のエラーがでてきますが、どういう意味でしょうか。 org.apache.jasper.JasperException: JSPのクラスをコンパイルできません: JSPファイル: /jsp/tokei.jsp の中の26行目でエラーが発生しました The method countNum(int, int[]) is undefined for the type tokei_jsp 23: </head> 24: <body> 25: <table> 26: <tr><td>キ鄲ハ</td><td>><%= countNum(-1, in) %></td></tr> 27: <tr><td>フ、ト�</td><td>3</td></tr> 28: <tr><td>スミタハ</td><td>3</td></tr> 29: </table> よろしくおねがいします。

    • ベストアンサー
    • Java
  • VBA Excel処理の追加を2点教えてください

    Office2003(SP3) 以下は、昔、教えてもらったExcel VBAスクリプトで、よく使わせて もらってます。「C:\mybooks\」にあるxlsファイル(a001.xls、a002.xls、 a003.xls・・・・)を片っ端から開き、 1つのBookに束ねる動作をします。 これだけでも大変便利なのですが、もう少し改善いたしたく。 (1) 束ねられたBookのSheet名が、Sheet1、Sheet1 (2)、Sheet1 (3)、 Sheet1 (4)・・・ になってしまいます。そこで、ファイル名から拡張子を落 とした文字列をSheet名にセットする記述をご教示下さい。 (2) a001.xls、a002.xls、a003.xls・・・は、それぞれSheet1、Sheet2、 Sheet3を含みます。Sheet1だけが抜き取られてSheet2、Sheet3が残された大量 の残骸Bookが開きっぱなしになります。これら、保存せずに閉じる記述を追加 したいのですが。 よろしくお願い致します。 Sub OpenFiles() Dim i As Integer Dim wb As Workbook Dim fname Dim dirname As String ' i = 1 dirname = "C:\mybooks\" fname = Dir(dirname + "*.htm") If fname <> "" Then Do While fname <> "" If fname <> "." And fname <> ".." Then If i = 1 Then ' 最初のファイルを開く Workbooks.OpenText FileName:=dirname + fname Set wb = ActiveWorkbook ' 最初のファイルを新規ブックに複製して閉じる。 ActiveSheet.Copy wb.Close Set wb = ActiveWorkbook Else ' 2番目以降のファイルは複製した最初のファイルに追加 Workbooks.OpenText FileName:=dirname + fname ActiveSheet.Move After:=wb.Worksheets(wb.Worksheets.Count) End If i = i + 1 End If fname = Dir Loop Else MsgBox "検索条件を満たすファイルはありません。" End If Set wb = Nothing End Sub

  • C++による ファイルの読み込み

    今、Visual C++2008 Express Editionを使用して、ファイルダイアログを使用して用意した配列にファイル内容を記憶させる簡単なプログラムを作成しています。 プログラムの流れは以下のとおりです。 1.ボタンをクリックする。 2.ファイルダイアログを表示する。 3.選択されたファイル名の内容を用意した配列に記憶する。 1,2はできたのですが、選択されたファイル(主にCSVファイル)の内容を配列に記憶させる方法がわかりません。 どうしたらよいのでしょうか。教えてください。 以下にボタンを押したときの動作を掲載しますのでお願いいたします。 ========================= private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { //ファイル内容を記憶させる配列 double x[1024], y[1024]; //ファイルを読み込むときのループインデックス                    int i=0;                   //ファイル名を格納する変数                    String^ fname;               ファイルを開くためのダイアログを用意 OpenFileDialog^ dlg = gcnew OpenFileDialog();                 //フィルターの内容を設定 dlg->Filter::set("CSVファイル(*.csv)|*.csv");              //ダイアログタイトルの設定 dlg->Title::set("開くファイルを選択してください。");              //ダイアログの表示 dlg->ShowDialog();             //ファイル名を取得して格納    fname=dlg->FileName;        /**********************************************           ここに上記の「fname」のファイルを読み込む処          理がくる              ********************************/ }

  • CSSファイルにするには2

    HTMLファイルを文章構造にし、この<table border= "1">をCSSファイルでHTMLファイルに出力するためにはどうしたら良いでしょうか?お願いします。条件は、HTMLファイルに<div class="t3"> という形にし、CSSファイルにはt3{}という形にしたいことです。枠にしたいのは次のとおりであます。 <table border= "1"> <tr><td> &nbsp;&nbsp;&nbsp;&nbsp;answer1,answer2:string<b  writeln( 'Are you interested in ancient ruins?') <br> end. </td></tr> </table>

  • PHPでCSVファイルのデータを表示したところ日本語が表示されません

    PHPで、CSVファイルの中身を表示させようと思ったのですが、一部の日本語が正しく表示されません。 問題のPHPとCSVファイルの内容を明記します。アドバイスお待ちしております。 PHP <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>tokuten</title> </head> <body> <TABLE border="1"> <TBODY> <TR> <TD>ID</TD> <TD>名前</TD> <TD>点数</TD> </TR> <?php $fname = "name.csv"; $fp = fopen($fname, "r"); while (list($id, $name, $point) = fgetcsv($fp, 100, ",")) { echo"<TR>"; echo"<TD>".$id; echo"</TD>"; echo"<TD>".$name; echo"</TD>"; echo"<TD>".$point; echo"</TD>"; echo"</TR>"; } fclose($file); ?> </TBODY> </TABLE> </body> </html> CSV 1,a,50 2,b,70 3,c,100 55,松井,55 530000,フリーザ,530000

    • 締切済み
    • PHP
  • エクセル表をHTML化

    高橋太郎 赤 佐藤太郎 白 鈴木太郎 黄 山田太郎 青 Sub convertHTML() Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets(1) Dim htmlFile As String htmlFile = ActiveWorkbook.Path & "\ファイル名.html" Open htmlFile For Output As #1 Dim i, j As Long i = 1 Print #1, "<table>" Do While ws.Cells(i, 1).Value <> "" Print #1, vbTab & "<tr>"; j = 1 Do While ws.Cells(i, j).Value <> "" Print #1, "<td>" & ws.Cells(i, j).Value & "</td>"; j = j + 1 Loop Print #1, "</tr>" & vbCr; i = i + 1 Loop Print #1, "</table>" Close #1 MsgBox htmlFile & "に書き出しました" End Sub 以下が結果です。 <table> <tr><td>高橋太郎</td><td>赤</td></tr> <tr><td>佐藤太郎</td><td>白</td></tr> <tr><td>鈴木太郎</td><td>黄</td></tr> <tr><td>山田太郎</td><td>青</td></tr> </table> 下記のようにするにはどうすればよいでしょうか? <table> <tr><td>赤</td><td>高橋太郎</td></tr> <tr><td>白</td><td>佐藤太郎</td></tr> <tr><td>黄</td><td>鈴木太郎</td></tr> <tr><td>青</td><td>山田太郎</td></tr> </table> セルを書き換えた方が早いですが、名前がバラバラですし、何千行もあり、作業が大変なので、マクロを書き換えた方が早いかと思いましたので。 宜しくお願いします。

  • tableをスタイルシートで

    <table> <tr> <td> 123 </td> <td rowspan="2"> 456 </td> </tr> <tr> <td> 789 </td> </tr> </table> 上記と同じ意味で、スタールシートでの書き方がわからないのですが どうすればよいでしょうか?

    • ベストアンサー
    • HTML