全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2959
推到 Plurk!
推到 Facebook!

Applet 與 Excel

尚未結案
jichang
一般會員


發表:9
回覆:12
積分:4
註冊:2004-02-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-30 16:40:44 IP:220.130.xxx.xxx 未訂閱
Dear 大大:       小弟最近想嘗試由Client讀取Excel,透過Signed Applet已可讀到Client的檔案,但是無法將Excel的內容讀出,我是使用jxl.jar去讀檔的,若將jxl.jar使用於application是沒問題的,但用於applet就無法使用,不曉得是小弟的設定有問題?或是程式有問題?煩請各位大大幫忙解惑:    applet程式碼如下: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; import java.io.*; import jxl.*;    public class ExcelView extends JApplet{    private JLabel label;    public void init(){       try{          javax.swing.SwingUtilities.invokeAndWait(new Runnable(){             public void run(){                createApp();             }           });       } catch(Exception e){          System.err.println("Read File Fail!!!");       }    }    public void createApp(){       JMenuBar menuBar = new JMenuBar();       setJMenuBar(menuBar);       JMenu menu = new JMenu("File");       menuBar.add(menu);       JMenuItem openItem = new JMenuItem("Open");       menu.add(openItem);       openItem.addActionListener(new FileOpenListener());       JMenuItem exitItem = new JMenuItem("Exit");       menu.add(exitItem);       exitItem.addActionListener(new ActionListener(){          public void actionPerformed(ActionEvent event){             System.exit(0);           }       });       label = new JLabel();       Container contentPane = getContentPane();       contentPane.add(label);    }    public class FileOpenListener implements ActionListener{       public void actionPerformed(ActionEvent evt){          JFileChooser chooser = new JFileChooser();          chooser.setCurrentDirectory(new File("."));          chooser.setFileFilter(new javax.swing.filechooser.FileFilter(){             public boolean accept(File f){                return f.getName().toLowerCase().endsWith(".xls")                    || f.isDirectory();             }             public String getDescription(){                return "Excel";             }          });          int r = chooser.showOpenDialog(ExcelView.this);          if (r == JFileChooser.APPROVE_OPTION){             String name = chooser.getSelectedFile().getPath();             try {                InputStream is = new FileInputStream(name);                label.setText(name + "Successful One");                jxl.Workbook rwb = Workbook.getWorkbook(is);                label.setText("Successful Two");                Sheet rs = rwb.getSheet(0);                int rscol = rs.getColumns();                int rsrow = rs.getRows();                int col=0,row=0;                while (col < rscol) {                   row = 0;                   while (row < rsrow) {                      Cell cl = rs.getCell(col,row);                      String str = cl.getContents();                      label.setText(col + "," + row + ":" + str);                      row++;                   }                   col++;                }                rwb.close();             } catch (Exception e) {                System.err.println(e);                label.setText(e.toString());             }          }       }    } }    HTML程式碼如下(兩個都試過): <html> <applet codebase="." code="ExcelView" archive="lib/ExcelView.jar, lib/jxl.jar" width=800 height=300> </applet> </html> <html> <applet codebase="." code="ExcelView" archive="lib/ExcelView.jar" width=800 height=300> </applet> </html> 程式位置如下: applet.htm → C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\jichang\Bar ExcelView.jar、jxl.jar → C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\jichang\Bar\lib 也曾將 ExcelView.jar、jxl.jar 放於 C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\wintech\WEB-INF\lib 程式跑到 label.setText(name "Successful One"); 就停了,請各位大大幫忙看一下,不勝感激~~~
neoart
版主


發表:22
回覆:582
積分:425
註冊:2003-05-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-30 17:49:41 IP:61.64.xxx.xxx 未訂閱
老句話 1.用[ code ] ... [ / code ] (發言表上的"#"按鈕)把你的code夾好 沒有排縮,看的很累 2.你的applet在我這裡看到的錯誤是:
載入︰找不到類別 ExcelView。
java.lang.ClassNotFoundException: ExcelView
        at sun.applet.AppletClassLoader.findClass(Unknown Source)
        at sun.plugin.security.PluginClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.applet.AppletClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.applet.AppletClassLoader.loadCode(Unknown Source)
        at sun.applet.AppletPanel.createApplet(Unknown Source)
        at sun.plugin.AppletViewer.createApplet(Unknown Source)
        at sun.applet.AppletPanel.runLoader(Unknown Source)
        at sun.applet.AppletPanel.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: open HTTP connection failed.
        at sun.applet.AppletClassLoader.getBytes(Unknown Source)
        at sun.applet.AppletClassLoader.access$100(Unknown Source)
        at sun.applet.AppletClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
你要不要放在可以連外的地方?
jichang
一般會員


發表:9
回覆:12
積分:4
註冊:2004-02-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-30 18:25:17 IP:220.130.xxx.xxx 未訂閱
Sorry,我再貼一次我的程式:    Applet →   
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.io.*;
import jxl.*;    public class ExcelView extends JApplet{
   private JLabel label;
   public void init(){
      try{
         javax.swing.SwingUtilities.invokeAndWait(new Runnable(){
            public void run(){
               createApp();
            }
          });
      } catch(Exception e){
         System.err.println("Read File Fail!!!");
      }
   }
   public void createApp(){
      JMenuBar menuBar = new JMenuBar();
      setJMenuBar(menuBar);
      JMenu menu = new JMenu("File");
      menuBar.add(menu);
      JMenuItem openItem = new JMenuItem("Open");
      menu.add(openItem);
      openItem.addActionListener(new FileOpenListener());
      JMenuItem exitItem = new JMenuItem("Exit");
      menu.add(exitItem);
      exitItem.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent event){
            System.exit(0); 
         }
      });
      label = new JLabel();
      Container contentPane = getContentPane();
      contentPane.add(label);
   }
   public class FileOpenListener implements ActionListener{
      public void actionPerformed(ActionEvent evt){
         JFileChooser chooser = new JFileChooser();
         chooser.setCurrentDirectory(new File("."));
         chooser.setFileFilter(new javax.swing.filechooser.FileFilter(){
            public boolean accept(File f){
               return f.getName().toLowerCase().endsWith(".xls")
                   || f.isDirectory();
            }
            public String getDescription(){
               return "Excel";
            }
         });
         int r = chooser.showOpenDialog(ExcelView.this);
         if (r == JFileChooser.APPROVE_OPTION){
            String name = chooser.getSelectedFile().getPath();
            try {
               InputStream is = new FileInputStream(name);
               label.setText(name   "Successful One");
               jxl.Workbook rwb = Workbook.getWorkbook(is);
               label.setText("Successful Two");
               Sheet rs = rwb.getSheet(0);
               int rscol = rs.getColumns();
               int rsrow = rs.getRows();
               int col=0,row=0;
               while (col < rscol) {
                  row = 0;
                  while (row < rsrow) {
                     Cell cl = rs.getCell(col,row);
                     String str = cl.getContents();
                     label.setText(col   ","   row   ":"   str);
                     row  ;
                  }
                  col  ;
               }
               rwb.close();
            } catch (Exception e) {
               System.err.println(e);
               label.setText(e.toString());
            }
         }
      }
   }
}
 
html →
<applet codebase="." code="ExcelView" archive="lib/ExcelView.jar, lib/jxl.jar" width=800 height=300>
</applet>    <applet codebase="." code="ExcelView" archive="lib/ExcelView.jar" width=800 height=300>
</applet>
 
由於我這邊是內部網路,所以無法連外,因此請多多見諒~~~ 發表人 - jichang 於 2005/05/30 18:27:16
neoart
版主


發表:22
回覆:582
積分:425
註冊:2003-05-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-30 18:46:13 IP:61.64.xxx.xxx 未訂閱
你的exception的try & catch要用別的方式來顯示比較具體
try{
  ...
  ...
}catch(Exception exp){
 exp.printStackTrace(); //<---這東西比較完全
 ...
 ...
}
再看一下是什麼問題吧
jichang
一般會員


發表:9
回覆:12
積分:4
註冊:2004-02-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-05-30 18:58:54 IP:220.130.xxx.xxx 未訂閱
Neo大大: 我已將exception e等句改掉了,可是我的IE畫面上仍然只出現"C:\a.xls Successful One",也就是只讀到這個檔案,但無法開啟,並沒有出現其他錯誤訊息,是否我需要裝上什麼Debug軟體?或是需設定什麼呢? 麻煩你指導,謝謝。
neoart
版主


發表:22
回覆:582
積分:425
註冊:2003-05-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-05-30 21:56:37 IP:61.56.xxx.xxx 未訂閱
你有沒有打開你的IE(或是netscape)的java 主控台呢? 這些Applet的system.out或是exception的stackTrace都是輸出到 java 主控台 (java console) 有沒有主控台的內容?
jichang
一般會員


發表:9
回覆:12
積分:4
註冊:2004-02-11

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-05-31 08:52:29 IP:220.130.xxx.xxx 未訂閱
嗯嗯,了解,主控台訊息如下,麻煩大大幫忙看一下:     
Java Plug-in 1.5.0_02
使用 JRE 版本 1.5.0_02 Java HotSpot(TM) Client VM
使用者主目錄 = C:\Documents and Settings\wendellc    ----------------------------------------------------
c:   清除主控台視窗
f:   終結在結束佇列上的物件
g:   資源回收
h:   顯示此說明訊息
l:   傾印類別載入器清單
m:   列印記憶體用量
o:   觸發記錄
p:   重新載入 Proxy 配置
q:   隱藏主控台
r:   重新載入策略配置
s:   傾印系統和部署屬性
t:   傾印執行緒清單
v:   傾印執行緒堆疊
x:   清除類別載入器快取記憶體
0-5: 將追蹤層次設定成 
----------------------------------------------------    Exception in thread "AWT-EventQueue-2" java.lang.ExceptionInInitializerError
        at jxl.Workbook.getWorkbook(Workbook.java:242)
        at ExcelView$FileOpenListener.actionPerformed(ExcelView.java:60)
        at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
        at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
        at javax.swing.AbstractButton.doClick(Unknown Source)
        at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
        at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
        at java.awt.Component.processMouseEvent(Unknown Source)
        at javax.swing.JComponent.processMouseEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.security.AccessControlException: access denied (java.util.PropertyPermission logger read)
        at java.security.AccessControlContext.checkPermission(Unknown Source)
        at java.security.AccessController.checkPermission(Unknown Source)
        at java.lang.SecurityManager.checkPermission(Unknown Source)
        at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
        at java.lang.System.getProperty(Unknown Source)
        at common.Logger.initializeLogger(Logger.java:57)
        at common.Logger.getLogger(Logger.java:40)
        at jxl.WorkbookSettings.(WorkbookSettings.java:40)
        ... 27 more     
neoart
版主


發表:22
回覆:582
積分:425
註冊:2003-05-09

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-05-31 10:04:01 IP:61.64.xxx.xxx 未訂閱
.... java.security.AccessControlException: access denied (java.util.PropertyPermission logger read) ... 老句話,applet用別人的jar檔時.那個jar也要做簽章(Signe)
jichang
一般會員


發表:9
回覆:12
積分:4
註冊:2004-02-11

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-05-31 10:22:40 IP:220.130.xxx.xxx 未訂閱
嗯,試成功了,感激Neo大大!!!
系統時間:2024-07-01 20:50:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!