JCom know how LastUpdate:
戻るJComとはJavaからWindowsのCOMを利用することのできる Java-COMブリッジです。ExcelやWordなど、既存のCOMの機能をJavaから利用することができます。
製品概要 http://www.hcn.zaq.ne.jp/no-ji/jcom/index.htm
2001/11/27
2001/11/27
フォルダの中にサンプルがありそうなので、それを元に簡単なサンプルを作ってみる。
これでスタンドアロンベースでのEXCELの基本的な連係は確認できました。ネ。
いろいろサンプルがあったので、そこからエッセンスだけを取り出して、シンプルサンプルを作ってみたいと思う。
イメージ
フォームから値を入れて、それをExcelに表示する。
値入力用フォーム
C:\Program Files\Allaire\JRun\servers\default\jcomtest1\jcomexcel2.html
<html lang="ja">
<head>
<title>No Tiltle.</title>
</head>
<body>
<form method="POST" action="http://10.72.24.41:8100/jcomtest1/servlet/JComExcel2">
<input type="text" name="T1" size="20">
<input type="text" name="T2" size="20"><br>
<input type="text" name="T3" size="20">
<input type="text" name="T4" size="20"><br>
<input type="submit" value="送信" name="B1">
<input type="reset" value="リセット" name="B2"></p>
</form>
</body>
</html>
Servletソース
C:\Program Files\Allaire\JRun\servers\default\jcomtest1\WEB-INF\classes\JComExcel2.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import jp.ne.so_net.ga2.no_ji.jcom.excel8.*;
import jp.ne.so_net.ga2.no_ji.jcom.*;
public class JComExcel2 extends HttpServlet {
// POSTに変更
public void doPost( HttpServletRequest req,
HttpServletResponse res) throws IOException, ServletException {
// まず、エクセルを準備する-------------------------------------------------
ReleaseManager rm = new ReleaseManager();
try{
// 各エクセルオブジェクト変数を宣言
ExcelApplication excel = new ExcelApplication(rm);
// excel.Visible(true); サーバーでエクセルが見えたら困るので、見えるようにする必要な無い
ExcelWorkbooks xlBooks = excel.Workbooks();
ExcelWorkbook xlBook = xlBooks.Open("C:\\Inetpub\\wwwroot\\test\\MHATEST2.xls");
ExcelWorksheet xlSheet = excel.ActiveSheet();
ExcelRange xlRange = xlSheet.Cells();
// リクエストの値から、セルに値をセット
xlRange.Item(1, 2).Value(req.getParameter("T1"));
xlRange.Item(1, 3).Value(req.getParameter("T2"));
xlRange.Item(2, 2).Value(req.getParameter("T3"));
xlRange.Item(2, 3).Value(req.getParameter("T4"));
//保存する
xlBook.Save();
xlBook.Close(false,null,false);
//エクセルオブジェクトの破棄
excel.Quit();
}catch(Exception e){
System.out.println("例外発生");
}finally{
rm.release();
}
// セーブしたエクセルをクライアント側に直接表示させる----------------------------------
// Specify content type.
res.setContentType("text/html");
// Access the output stream.
PrintWriter out = res.getWriter();
// Return HTML.
out.println("<html>");
out.println("<head><title>JComExcel2</title></head>");
out.println("<script language='javascript'>");
out.println("function ExcelLoad(){");
out.println("subwin = window.open('http://10.72.24.41/test/MHATEST2.xls');"); // 別windowで開くようにしてみた
out.println("}");
out.println("</script>");
out.println("<body onload = 'ExcelLoad()'");
out.println("<h1>JComExcel2.java</h1>");
out.println("<p>This text came from a servlet.</p>");
out.println("<p>C:\\Program Files\\Allaire\\JRun\\servers\\default\\jcomtest1\\WEB-INF\\classes\\JComExcel2.class.</p>");
out.println("</body></html>");
}
}
実行方法 http://cnes-as1-l1041:8100/jcomtest1/JComExcel2.html
Servletの処理概略手順では、
といった感じで出来ました。
実験してみて判った問題点
2001/11/27