「夫を成功」へ導く妻の秘訣 座談会

excelデータを読み込んでブラウザで表示するJavaによるWebアプリケーションを
eclipseを使って作ろうとしています。
ところが、本やインターネットで探しても
eclipseを使用してexcelデータを扱うプログラムを作る例が見当たりません。
POIを使ってexcelデータを読み込む方法は見つかり、
それを参考にしたプログラム(JSP)は成功しました。
そしてそれをeclipseで再現しようとしたところ、うまくいきません。
そこで「もしかするとeclipseを使ってexcelデータを扱うプログラム(Java Servlet/JSP)を
作るのは一般的ではないのだろうか?」という疑問がわいてきました。
excelデータの処理以外にも、いろいろプログラムを作ってみたいので
これからもeclipseを使いたいのですが、excelデータを使ったプログラムだけは
eclipse以外で作ることになるのでしょうか?
eclipseでexcelデータを扱うプログラムを作ることが
一般的ではないのかどうか、だけでも構いませんので
どうぞよろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

何か勘違いしているようですが、eclipseはただの開発環境であってプログラムに何らかの影響を与えるものではありません。


eclipseを使おうが使わまいが同じものは作れます。

>そしてそれをeclipseで再現しようとしたところ、うまくいきません。
何がうまくいかないのか具体的に書かないと(エラーが出るならそのメッセージも)誰も対処方法を示すことはできません。

この回答への補足

どうも作成中のプログラムやエラー表示のページにリンクすると
gooの運営側に削除されてしまうようなので、
長くなってすみませんが、ここに紹介させていただきます。

*エラー表示*
[type]例外レポート
[説明] The server encountered an internal error () that prevented it from fulfilling this request.
[例外]org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:370)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
[原因]java.lang.NullPointerException
org.apache.jsp.output_jsp._jspService(org.apache.jsp.output_jsp:52)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

*javaプログラム*
package packs;

import java.io.IOException;
import java.io.FileInputStream;
import java.io.PrintWriter;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;

public class EXDATA extends HttpServlet {

public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
//TODO Method stub generated by Lomboz
PrintWriter out = response.getWriter();
FileInputStream in = new FileInputStream("/simple.xls");
String path = getServletContext().getRealPath("/simple.xls");
java.io.InputStream is = new java.io.FileInputStream(path);
POIFSFileSystem fs = new POIFSFileSystem(is);
is.close();
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
HSSFRow row = sheet.getRow((short)0);
HSSFCell cell = row.getCell((short)0);
out.println(cell.getStringCellValue());
/* JSPへ */
request.setAttribute("cell", cell);
getServletConfig()
.getServletContext()
.getRequestDispatcher("/output.jsp")
.forward(request, response);
}
}

*JSPプログラム*
<%@ page language="java" pageEncoding="Windows-31J" %>
<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title>Lomboz JSP</title>
</head>
<body bgcolor="#FFFFFF">

<%
/* サーブレットからの値を取得 */
String cell = request.getAttribute("cell").toString();
%>

<% out.println (cell); %>

</body>
</html>



以上です。
長くて恐縮ですが、もしよろしければアドバイスをよろしくお願いいたします。

補足日時:2005/10/21 21:15
    • good
    • 0
この回答へのお礼

ご回答いただきありがとうございます!

> eclipseを使おうが使わまいが同じものは作れます。
ありがとうございます。
それが確認できただけでも安心しました。

> 何がうまくいかないのか具体的に書かないと(エラーが出るならそのメッセージも)誰も対処方法を示すことはできません。

恐縮ながら、実は10日前にも質問させていただいておりました。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1703072

おかしな部分がありましたらどうぞご教授下さい。

お礼日時:2005/10/20 22:29

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEclipseでのJDBCドライバについて

Eclipse3.1でデータベース(mysql)にアクセスするプログラムを作ったのですが下記のエラーが出ます。

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

これはJDBCドライバのセットアップがうまく出来ていないからなのでしょうか?
またEclipseでは、~.jarというファイルをプロジェクトのWEB-INFのlibフォルダに入れれば使える印象があるのですが、参考書(EclipseのではなくJAVAなどの)などにあるようにTomcatのインストールフォルダ以下common/libに入れて環境変数を変更しないといけないのでしょうか?

ご存知の方教えてください、よろしくお願いします。

Aベストアンサー

WEB-INF以下に入れると実行はできるのですが、エクリプスが.javaファイルをコンパイルすることができません。projectの一覧を右クリックしてpropertyを選択し、ダイアログ右側からJava Build Pathを選択し、タグからLibrariesを選び、Add JARsボタンをおして.jarファイルを登録して下さい。
たぶんこれでコンパイルできるはずです。

QTomcatは起動しますが初期index画面が表示できません

Tomcatについての質問は多数寄せられておりますが、
それらを参考にしてインストールなど行いますが、
どうしても後一歩のところで私の場合表示できないという、もどかしい状態になっております。
どうかご存知の方いらっしゃいましたらご教示お願い申し上げます。

Tomcat5.0をWindowsXPで起動しております。
Javaはj2sdk1.4.1_02です。
通常インストールした後Startup.batを起動し、IE6.0で
http://localhost:8080もしくは
http://127.0.0.1:8080と入力、Enterキーを押しますが、画面に
Connection refused
--------------------
Description: Connection refused
と表示されてしまいます。

下記に参考になるかわかりませんが、各種起動状態を記載いたします。アドバイスよろしくお願い申し上げます。

◆コマンドプロンプトで
>ping localhostと入力すると、
-----
Pinging yamamoto [127.0.0.1] with 32 bytes of data:

Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128

Ping statistics for 127.0.0.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
-----

と表示されます。また、
>telnet localhost 8080の場合は
-----
接続中: localhost...ホストへ接続できませんでした。 ポート番号 8080: 接続に失敗し
ました
-----
と表示されます。

お手数ですが、よろしくお願い申し上げます。

Tomcatについての質問は多数寄せられておりますが、
それらを参考にしてインストールなど行いますが、
どうしても後一歩のところで私の場合表示できないという、もどかしい状態になっております。
どうかご存知の方いらっしゃいましたらご教示お願い申し上げます。

Tomcat5.0をWindowsXPで起動しております。
Javaはj2sdk1.4.1_02です。
通常インストールした後Startup.batを起動し、IE6.0で
http://localhost:8080もしくは
http://127.0.0.1:8080と入力、Enterキーを押しますが、画面に
Connection re...続きを読む

Aベストアンサー

>Tomcatは起動しますが
とのことですが、Tomcatが起動していないと思います。

pingが通るのはTomcatと無関係で、PCが立ち上がっていれば帰ってくると思います。

telnet localhost 8080
で接続できないとのことなので、Tomcatが起動できていないのではないでしょうか?

Q「httpステータス404」というエラーが出ます。

「httpステータス404」というエラーが出ます。

java初心者です、宜しくお願い致します。
EclipseでServletを書いてやりましたが、以下のようなエラーが出ます、
原因はなんでしょうか、宜しくお願い致します。
「httpステータス404-/Servlet%E7%B7%B4%E7%BF%92/ ServOutput」

Aベストアンサー

Not Found
という意味です。
そのファイルが無い。あるいはリンクが間違っています。
詳しくは参考URLをみてください。

参考URL:http://ja.wikipedia.org/wiki/HTTP_404

QExcelファイルをダウンロード

Webページ上のあるボタンを押した時、サーバー上にExcelファイルを作成し、そのファイルをそのままクライアントにダウンロードするプログラムをつくろうとしています。その時、ダウンロードダイアログを表示させ、クライアントが任意の場所に保存できるようにしようと思っています。とりあえずファイルをダウンロードするクラスを下記のように作りました。
public class download {
public static final int EOF=-1;
public void downloader(HttpServletResponse res){
try {
String fileName = "testExcel1.xls";
String CONTENT_TYPE = "application/atom";

res.setContentType(CONTENT_TYPE);
res.setHeader("Content-Disposition", "filename=\""+ fileName +"\"");
URL urlObj=new URL("サーバーアドレス:8080/DB/testExcel.xls");
InputStream in = urlObj.openStream();
FileOutputStream(new File("testExcel1.xls"));
BufferedOutputStream bout= new BufferedOutputStream(res.getOutputStream());
int c;
while( (c = in.read()) != EOF ) {
bout.write(c);
}
bout.flush();
in.close();
} catch (Exception e ) {
e.printStackTrace();
}
}
}
このまま実行するとダウンロードダイアログは表示されず、Excelファイルの内容がクライアントのブラウザ上に表示されてしまします。どうしたらダウンロードダイアログが表示されるようになるでしょうか。アドバイスよろしくお願いします。

Webページ上のあるボタンを押した時、サーバー上にExcelファイルを作成し、そのファイルをそのままクライアントにダウンロードするプログラムをつくろうとしています。その時、ダウンロードダイアログを表示させ、クライアントが任意の場所に保存できるようにしようと思っています。とりあえずファイルをダウンロードするクラスを下記のように作りました。
public class download {
public static final int EOF=-1;
public void downloader(HttpServletResponse res){
try {
S...続きを読む

Aベストアンサー

setHeader の filename の前に attachment; を付けてみてはどうですか?

res.setHeader("Content-Disposition", "attachment; filename=\""+ fileName +"\"");

Qcsv出力について

JDBCでDBからデータを取得して、そのデータをCSV形式でEXCELに出力したい
のですが、どのようにすればいいか教えてください。
よろしくお願いします。

Aベストアンサー

どのように・・・と言いますと? どこから説明すればいいのでしょうか?(^_^;
「Excelに出力」というニュアンスから、やりたいことを100%実現するのは多分無理かな・・・と思うのですが。

とりあえず、ちょっと長いですが、簡単なサンプルを付けておきますね。
このサンプルは、

>java DBWriter ファイル名 "SQL文"

とすると動くもので、指定したファイル名にSQLの結果をCSV形式で吐き出します。

実行例)
>java DBWriter C:\tmp\TEST.csv "SELECT * FROM EMP"

ちょっとインデントがなくて見にくいですが、テキストエディタ等に貼り付けて見やすくしてください。
バグ取りはしてませんので、悪しからず。
-------------------------------------------------------------
import java.io.*;
import java.util.*;
import java.sql.*;

public class DBWriter {

public DBWriter() {
super();
}

public static void main(java.lang.String[] args) {

if (args.length != 2) {
System.out.println("起動方法が違います");
System.exit(1);
}
else {
try {
DBWriter dbWriter = new DBWriter();
// 引数1をファイル名、引数2をSQL文として扱う
dbWriter.createCSV(args[0], args[1]);
}
catch (Exception e) {
// 何らかのエラーがあっても、表示するのみ
System.out.println("エラーです");
e.printStackTrace();
}
}
}

protected void createCSV(String fileName, String sql) throws Exception {

// ドライバクラス名。これはOracleの場合の例。
String driverName = "oracle.jdbc.driver.OracleDriver";
// JDBCドライバURL。これはOracleの場合。
String connURL = "jdbc:oracle:thin:@172.20.108.51:1521:NDCORE2";
String connUID = "ibm07s"; // DBの接続ユーザ名
String connPWD = "ibm07s"; // DBの接続パスワード

Vector datas = new Vector(); // データ格納用の可変長配列

// データベースに接続する
Class.forName(driverName);
Connection conn = DriverManager.getConnection(connURL, connUID, connPWD);

// SQLを発行する
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);

// ファイルをオープンする(ようなもの)
File file = new File(fileName);
FileWriter fw = new FileWriter(file);

// データベースの列名定義を取得する
ResultSetMetaData rsmd = rs.getMetaData();
int cnt = rsmd.getColumnCount();
for (int idx = 1; idx <= cnt; idx++) {
String colName = rsmd.getColumnName(idx);
datas.add(colName);
}
// 列名をファイルに書き出す
writeData(fw, datas);

// データベースの各列のデータを取得する
while (rs.next()) {
for (int idx = 1; idx <= cnt; idx++) {
String data = rs.getString(idx);
datas.add(data);
}
// 各列のデータをファイルに書き出す
writeData(fw, datas);
}
// ファイルを閉じる
fw.close();
}
protected void writeData(FileWriter fw, Vector datas) throws IOException {

String buf = ""; // ファイルに書き出す文字列を入れるところ

// データが空でなかった場合のみ実行
if (datas != null && !datas.isEmpty()) {
for (int idx = 0; idx < datas.size(); idx++) {
// 先頭以外で、カンマをつける
if (idx > 0) {
buf += ",";
}
// 取り出したデータを文字列にくっつける
buf += (String)datas.get(idx);
}
// 行末に改行を入れる
buf += "\n";
// できた文字列をファイルに書き出す
fw.write(buf);
// もらったデータを空にする
datas.clear();
}
}
}

どのように・・・と言いますと? どこから説明すればいいのでしょうか?(^_^;
「Excelに出力」というニュアンスから、やりたいことを100%実現するのは多分無理かな・・・と思うのですが。

とりあえず、ちょっと長いですが、簡単なサンプルを付けておきますね。
このサンプルは、

>java DBWriter ファイル名 "SQL文"

とすると動くもので、指定したファイル名にSQLの結果をCSV形式で吐き出します。

実行例)
>java DBWriter C:\tmp\TEST.csv "SELECT * FROM EMP"

ちょっとインデントがなくて見に...続きを読む

QjavaでDBから取得したデータのJSP表示

JAVAでDBから取得し
ArrayList shikakuCdList = shikakuCd_Data();
request.setAttribute("shikakuCdList", shikakuCdList);

JSPでコンボボックスに表示しようと思います
<% ArrayList bumonlist = (ArrayList)request.getAttribute("bumonCdList");%>


<% for ( int i = 0; i < bumonlist.size(); i++ ){%>
<option value=" (1)ここの記述方法も  "></option>
<% }%>

という記述にしていますが、うまく動きません。
よろしくお願いします。

Aベストアンサー

><% for ( int i = 0; i < bumonlist.size(); i++ ){%>
><option value=" (1)ここの記述方法も  "></option>
><% }%>
この部分ですが、

もし、shikakuCd_Data()の返すArrayListの中身が
JavaBean(下記はTestBean)であれば、

<% for ( int i = 0; i < bumonlist.size(); i++ ){%>
<% TestBean test = (TestBean)bumonlist.get(i); %>
<option value="<%= test.ゲッター %>"></option>
<% }%>

もしくは、useBeanアクションをつかい、
coreライブラリのforEachタグを使って出力する方法もあります。
こちらの方法がお勧めですが。

Qeclipseとtomcatで404エラー

-----------------------------------
Windows7 Ultimate

eclipse Indigo
tomcat 5.5
-----------------------------------

eclipseとtomcatを使用して、JSPを動かそうとしています。
eclipseとtomcatとJDKはC:\pleiadesの下に配置しています。そしてワークスペースは
C:\workspace\Testとして登録しています。(ちなみに動的Webプロジェクトで作成しています)

既存のJSPファイルをeclipse上で右クリックして、サーバーで実行とすると、eclipseの画面上にきちんと表示されるのですが、その後、そこで動いていたtomcatを終了させて、eclipseの上部にあるtomcatのアイコンをクリックし、その後、通常のブラウザで表示させようとすると404エラーが出てしまいます。(http://localhost:8080/Test/test.jsp)

そもそも右クリック→実行の際に起動するtomcatとeclipse上部にアイコンで存在するtomcatはどう違うのでしょうか?

そしてどうすれば、上部のtomcat起動からブラウザで直接JSPを呼び出すことが出来るのでしょうか?

申し訳ありませんが、ご教授お願い致します。

-----------------------------------
Windows7 Ultimate

eclipse Indigo
tomcat 5.5
-----------------------------------

eclipseとtomcatを使用して、JSPを動かそうとしています。
eclipseとtomcatとJDKはC:\pleiadesの下に配置しています。そしてワークスペースは
C:\workspace\Testとして登録しています。(ちなみに動的Webプロジェクトで作成しています)

既存のJSPファイルをeclipse上で右クリックして、サーバーで実行とすると、eclipseの画面上にきちんと表示されるのですが、その後、そこで動いてい...続きを読む

Aベストアンサー

EclipseからTomcatを起動した場合、プロジェクトに生成されたWebアプリケーションのディレクトリをTomcatの公開ディレクトリに強制的に変更しています。普通に起動すると、プロジェクトのディレクトリはTomcatの公開ディレクトリにはなっていませんから表示は出来ません。

通常、Eclipseで作成したWebアプリケーションは、WARファイル(Webアーカイブ)として書き出し、それをデプロイします。Eclipseの「エクスポート」メニューでWARファイルを作成し、そのファイルをTomcatの「webapp」フォルダに入れてください。これで公開できるはずです。

QJavaで改行などが出来ないのです。

 Java の事で質問です。 
 

 System.out.println("このようにしても\n");

 改行できません。
 
 このようにしても\n   

 と表示されてしまいます。どうしてでしょう。ちなみにOSはMacOS9.1です。なにか関係があるのでしょうか?

Aベストアンサー

> class amigo{
> public static void main(String args[]) {
> System.out.print("aaaaaaaa");
> System.getProperty("line.separator");
> System.out.print("bbbbbbbb");
> }
> }
> のような使い方でしょうか?

String line_sep = System.getProperty("line.separator");
System.out.println("あいうえお" + line_sep + "かきくけこ");

こうです。

QJSPでリンクを利用してパラメータを次画面に渡す方法について。

一覧表示されているデータのNOをクリックすると、二つのパラメータでデータベースへアクセスし、該当データの詳細画面に遷移する、というプログラムを作っています。

データベースへアクセスする際に必要なIDは2つで、仮にID_A、ID_Bとします。
リンク部分のソースは

---------------------------------------------------------------------
<a href = "update_form.jsp?ID_A=<%= rs.getString("ID_A") %>">番号</a>
<input type="hidden" name="ID_B" value="<%= rs.getString("ID_Bcat_id") %>">
---------------------------------------------------------------------

としておりますが、次画面へ遷移すると、ID_Bの値はnullとなってしまうために、正常にデータの取得ができません。

二つのパラメータを使用する場合のパラメータを渡す方法を教えて頂きたいと思います。よろしくお願いします。

一覧表示されているデータのNOをクリックすると、二つのパラメータでデータベースへアクセスし、該当データの詳細画面に遷移する、というプログラムを作っています。

データベースへアクセスする際に必要なIDは2つで、仮にID_A、ID_Bとします。
リンク部分のソースは

---------------------------------------------------------------------
<a href = "update_form.jsp?ID_A=<%= rs.getString("ID_A") %>">番号</a>
<input type="hidden" name="ID_B" value="<%= rs.getString("ID_Bcat_id") %>">...続きを読む

Aベストアンサー

<a href = "update_form.jsp?ID_A=<%= rs.getString("ID_A") %>&ID_B=<%= rs.getString("ID_Bcat_id") %>">番号</a>

としてID_Bを&で繋げればMethod="get"で送れますね。
inputタグで送る場合はformタグでactionアトリビュートに飛ぶjspを指定してsubmitボタンかJavaScriptでsubmitさせなければならないと思います。

Qデータベース内のテーブル名の取得

お世話になります。
初心者的な質問でしたらすいません。
SQL文にてデータベース内のテーブル名を
調べることができると聞いたことがあるのですが、
可能でしょうか。

もし、可能であれば、SQLの記述を教えてください。
お願いします。

Aベストアンサー

select * from tab;

私の場合、テーブル名だけ手っ取り早く知りたいとき、↑を打ちます。その他の情報も知りたいときは#2さんの仰るとおり、user_tablesで取得します。


人気Q&Aランキング