PIXNET Logo登入

Thinking in Robert

跳到主文

生命若不是現在,那是何時....... 這是 Robert 的生活隨記..

部落格全站分類:生活綜合

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 4月 01 週三 200917:25
  • Unix 筆記 - Error Report


# errpt
IDENTIFIER TIMESTAMP  T C RESOURCE_NAME  DESCRIPTION
B617E928   0113043809 T H rmt0           TAPE OPERATION ERROR     --表 磁帶機錯誤 2009/01/13 04:38
#
#
#
#
#
#
#
# errpt -aj B617E928   --接 IDENTIFIER NO
---------------------------------------------------------------------------
LABEL:          TAPE_ERR6
IDENTIFIER:     B617E928
Date/Time:       Tue Jan 13 04:38:49 TAIS
Sequence Number: 347
Machine Id:      0006772CD700
Node Id:         XXXX_TP
Class:           H
Type:            TEMP        --臨時性錯誤
Resource Name:   rmt0
Resource Class:  tape
Resource Type:   scsd
Location:        U787F.001.DPM2HN2-P1-T10-L0-L0
VPD:
       Manufacturer................IBM
       Machine Type and Model......DDS Gen5
       Device Specific.(Z1)........B011
       Serial Number...............20751263
       Device Specific.(LI)........A1700D61
       Part Number.................95P1986
       FRU Number..................95P1988  --料號
       EC Level....................H81467
       Device Specific.(Z0)........0180020283000130
       Device Specific.(Z3)........L1
Description
TAPE OPERATION ERROR
Probable Causes
TAPE DRIVE
User Causes
DIRTY READ/WRITE HEAD
       Recommended Actions
       PERFORM PROBLEM DETERMINATION PROCEDURES
Failure Causes
TAPE DRIVE
       Recommended Actions
       PERFORM PROBLEM DETERMINATION PROCEDURES
Detail Data
SENSE DATA
0600 0000 0100 0000 0000 0000 0000 0000 0102 0000 7000 0100 0000 002C 0000 0000
0017 0000 0000 482D 4231 312D 3130 3230 3735 3132 3633 2D35 2D30 302D 3030 3030
3300 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 009A 638E
#
#
#
(繼續閱讀...)
文章標籤

羅伯特 發表在 痞客邦 留言(0) 人氣(231)

  • 個人分類:Oracle & Unix
▲top
  • 4月 01 週三 200917:17
  • Unix 筆記 - set -o vi

From 網路文章
http://www.iaiau.com/post/229/


(繼續閱讀...)
文章標籤

羅伯特 發表在 痞客邦 留言(0) 人氣(1,161)

  • 個人分類:Oracle & Unix
▲top
  • 4月 01 週三 200917:11
  • Unix 筆記 - 硬體篇

# lsvg   --Volumn Group , 分成下列兩個 vg
rootvg
Datavg
#
#
#
#
#
# lspv  --邏輯硬碟
hdisk0          0006772c70a9a7b3                    rootvg          active
hdisk1          0006772cf9d1a2bb                    rootvg          active
hdisk2          0006772cf998941d                    Datavg          active   --Raid 5
#
#
#
#
# lspv hdisk2   --查看邏輯硬碟 hdisk2 明細
PHYSICAL VOLUME:    hdisk2                   VOLUME GROUP:     Datavg
PV IDENTIFIER:      0006772cf998941d VG IDENTIFIER     0006772c0000d70000000113f998b649
PV STATE:           active
STALE PARTITIONS:   0                        ALLOCATABLE:      yes
PP SIZE:            256 megabyte(s)          LOGICAL VOLUMES:  8
TOTAL PPs:          797 (204032 megabytes)   VG DESCRIPTORS:   2
FREE PPs:           156 (39936 megabytes)    HOT SPARE:        no
USED PPs:           641 (164096 megabytes)
FREE DISTRIBUTION:  00..00..00..00..156
USED DISTRIBUTION:  160..159..159..159..04
#
#
#
#
# lsdev -C|grep disk  --查看硬體, 且與 disk 字串相關
hdisk0     Available 04-08-00-3,0  16 Bit LVD SCSI Disk Drive   --OS
hdisk1     Available 04-08-00-4,0  16 Bit LVD SCSI Disk Drive   --OS
hdisk2     Available 04-08-ff-0,0  SCSI RAID 5 Disk Array       --DB ,內容包涵下面四顆
pdisk0     Available 04-08-01-3,0  Physical SCSI Disk Drive
pdisk1     Available 04-08-01-4,0  Physical SCSI Disk Drive
pdisk2     Available 04-08-01-5,0  Physical SCSI Disk Drive
pdisk3     Available 04-08-01-8,0  Physical SCSI Disk Drive
#
#
#
#
# lsvg -l rootvg  --掛在 rootvg 下的路徑 ( 所 mount 的 path )
rootvg:
LV NAME             TYPE       LPs   PPs   PVs  LV STATE      MOUNT POINT
hd5                 boot       1     2     2    closed/syncd  N/A
hd6                 paging     32    64    2    open/syncd    N/A
hd8                 jfs2log    1     2     2    open/syncd    N/A
hd4                 jfs2       32    64    2    open/syncd    /
hd2                 jfs2       40    80    2    open/syncd    /usr
hd9var              jfs2       32    64    2    open/syncd    /var
hd3                 jfs2       16    32    2    open/syncd    /tmp
hd1                 jfs2       32    64    2    open/syncd    /home
hd10opt             jfs2       1     2     2    open/syncd    /opt
fwdump              jfs2       1     2     2    open/syncd    /var/adm/ras/platform
fslv00              jfs2       192   192   1    open/syncd    /backup2
paging00            paging     32    64    2    open/syncd    N/A
#
#
#
#
# lsvg rootvg         --掛在 rootvg 下的明細
VOLUME GROUP:   rootvg                   VG IDENTIFIER:  0006772c0000d70000000113f153e223
VG STATE:       active                   PP SIZE:        128 megabyte(s)
VG PERMISSION:  read/write               TOTAL PPs:      1092 (139776 megabytes)
MAX LVs:        256                      FREE PPs:       460 (58880 megabytes)
LVs:            12                       USED PPs:       632 (80896 megabytes)
OPEN LVs:       11                       QUORUM:         1
TOTAL PVs:      2                        VG DESCRIPTORS: 3
STALE PVs:      0                        STALE PPs:      0
ACTIVE PVs:     2                        AUTO ON:        yes
MAX PPs per PV: 1016                     MAX PVs:        32
LTG size:       128 kilobyte(s)          AUTO SYNC:      no
HOT SPARE:      no                       BB POLICY:      relocatable
#
#
#
#
#
#
# lsvg -l Datavg   --掛在 Datavg 下的路徑 ( 所 mount 的 path )
Datavg:
LV NAME             TYPE       LPs   PPs   PVs  LV STATE      MOUNT POINT
fslv02              jfs2       40    40    1    open/syncd    /oracle/app
loglv00             jfs2log    1     1     1    open/syncd    N/A
lv00                jfs2       8     8     1    open/syncd    /work
lv01                jfs2       120   120   1    open/syncd    /backup
lv02                jfs2       12    12    1    open/syncd    /oraweb
lv03                jfs2       240   240   1    open/syncd    /ieo_data
lv04                jfs2       180   180   1    open/syncd    /ieo_index
fslv03              jfs2       40    40    1    open/syncd    /oracle/was
#
#
#
#
#
#
#
# lsvg Datavg        --掛在 Datavg 下的明細
VOLUME GROUP:   Datavg                   VG IDENTIFIER:  0006772c0000d70000000113f998b649
VG STATE:       active                   PP SIZE:        256 megabyte(s)
VG PERMISSION:  read/write               TOTAL PPs:      797 (204032 megabytes)
MAX LVs:        256                      FREE PPs:       156 (39936 megabytes)
LVs:            8                        USED PPs:       641 (164096 megabytes)
OPEN LVs:       8                        QUORUM:         2
TOTAL PVs:      1                        VG DESCRIPTORS: 2
STALE PVs:      0                        STALE PPs:      0
ACTIVE PVs:     1                        AUTO ON:        yes
MAX PPs per PV: 1016                     MAX PVs:        32
LTG size:       128 kilobyte(s)          AUTO SYNC:      no
HOT SPARE:      no                       BB POLICY:      relocatable
#
#
#
#
# oslevel      -- OS level ?
5.2.0.0
#
(繼續閱讀...)
文章標籤

羅伯特 發表在 痞客邦 留言(0) 人氣(647)

  • 個人分類:Oracle & Unix
▲top
  • 3月 25 週三 200917:32
  • Oracle常用傻瓜問題1000問 [9I ADMIN]

from 網路文章
http://joeyta.blogspot.com/2006/09/oracle1000-9i-admin.html
 

(繼續閱讀...)
文章標籤

羅伯特 發表在 痞客邦 留言(1) 人氣(21,090)

  • 個人分類:Oracle & Unix
▲top
  • 3月 12 週四 200913:57
  • webmail.dat 是啥?

今天遇到同事來問 webmail.dat 是啥?
怎麼會在 OutLook 裡面可以讀,在公司的 WebMail 裡面卻是另一個樣呢
經我拜了股溝大神之後,終於知道是為什麼了,在此稍作紀錄,原因 & 解法如下


(繼續閱讀...)
文章標籤

羅伯特 發表在 痞客邦 留言(0) 人氣(1,222)

  • 個人分類:MIS大小事
▲top
  • 2月 23 週一 200910:53
  • JAVA - Excel 開檔讀檔 - POI 篇

官方教學:
http://jakarta.apache.org/poi/hssf/quick-guide.html
http://jakarta.apache.org/poi/hssf/how-to.html

下載頁
http://www.apache.org/dyn/closer.cgi/poi/release/
poi-bin-3.2-FINAL-20081019.zip
(繼續閱讀...)
文章標籤

羅伯特 發表在 痞客邦 留言(0) 人氣(12,473)

  • 個人分類:Java & JavaScript
▲top
  • 2月 23 週一 200910:42
  • JAVA - Excel 開檔讀檔實作 - BY JXL

From 網路文章 + Robert 實際測試&修改
 



一、創建文件
擬生成一個名為「測試數據.xls」的Excel文件,其中第一個工作表被命名為「第一頁」,大致效果如下:
代碼(CreateXLS.java):
//生成Excel的類
 import java.io.File; 
 import jxl.Workbook; 
 import jxl.write.Label; 
 import jxl.write.WritableSheet; 
 import jxl.write.WritableWorkbook; 
 class CreateXLS { 
   public static void main(String args[]) { 
     try { 
       // 打開文件 
       WritableWorkbook book = Workbook.createWorkbook(new File("測試.xls")); 
       // 生成名為「第一頁」的工作表,參數0表示這是第一頁 
       WritableSheet sheet = book.createSheet("第一頁", 0); 
       // 在Label對象的構造子中指名單元格位置是第一列第一行(0,0) 
       // 以及單元格內容為test 
       Label label = new Label(0, 0, "test"); 
       // 將定義好的單元格添加到工作表中 
       sheet.addCell(label); 
       /*
        * 生成一個保存數字的單元格 必須使用Number的完整包路徑,否則有語法歧義 單元格位置是第二列,第一行,值為789.123
        */ 
       jxl.write.Number number = new jxl.write.Number(1, 0, 789.123); 
       sheet.addCell(number); 
       // 寫入數據並關閉文件 
       book.write(); 
       book.close(); 
     } catch (Exception e) { 
       System.out.println(e); 
     } 
   } 
 } 
-------------------------------------------------------------------------------------------------------------------------
三、讀取文件
以剛才我們創建的Excel文件為例,做一個簡單的讀取操作,程序代碼如下:
//讀取Excel的類
 import java.io.*; 
 import jxl.*; 
 class ReadXLS { 
   public static void main(String args[]) { 
     try { 
       Workbook book = Workbook.getWorkbook(new File("測試.xls")); 
       // 獲得第一個工作表對象 
       Sheet sheet = book.getSheet(0); 
       int rows = sheet.getRows() ;//.getPhysicalNumberOfRows();
        System.out.println("rows = " + rows );  //總筆數
                  
       // 得到第一列第一行的單元格 
       Cell cell1 = sheet.getCell(0, 0); 
       String result = cell1.getContents(); // 獲得單元格的內容 
       System.out.println(result); 
       book.close(); 
     } catch (Exception e) { 
       System.out.println(e); 
     } 
   } 
 } 
-------------------------------------------------------------------------------------------------------------------------
四、修改文件
利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的時候,除了打開文件的方式不同之外,其他操作和創建Excel是一樣的。下面的例子是在我們已經生成的Excel文件中添加一個工作表:
//修改Excel的類,添加一個工作表
查看複製到剪切板打印
      
import java.io.*; 
import jxl.*; 
import jxl.Workbook; 
import jxl.write.Label; 
import jxl.write.WritableSheet; 
import jxl.write.WritableWorkbook; 
       
   class UpdateXLS { 
     public static void main(String args[]) { 
       try { 
         // Excel獲得文件 
         Workbook wb = Workbook.getWorkbook(new File("測試.xls")); 
        
        // 打開一個文件的副本,並且指定數據寫回到原文件 
        WritableWorkbook book = Workbook.createWorkbook(new File("測試.xls"), wb);   
       
        // 添加一個工作表 
        WritableSheet sheet = book.createSheet("第二頁", 1); 
        sheet.addCell(new Label(0, 0, "第二頁的測試數據")); 
        book.write(); 
        book.close(); 
      } catch (Exception e) { 
        System.out.println(e); 
      } 
    } 
  }
(繼續閱讀...)
文章標籤

羅伯特 發表在 痞客邦 留言(2) 人氣(11,117)

  • 個人分類:Java & JavaScript
▲top
  • 2月 23 週一 200910:38
  • JAVA - Excel 開檔讀檔 - JXL 篇

From 網路文章




--原文網址
http://www.ibm.com/developerworks/cn/java/l-javaExcel/index.html        
       
--Java Excel API 介紹
http://www.andykhan.com/jexcelapi/
--Java Excel API 下載
http://www.andykhan.com/jexcelapi/download.html       
--
將下載後的文件解包,得到jxl.jar,放入classpath,安裝就完成了。
或是匯入 Eclipse 的 Library 即可--
來自http://www.linuxuser.com.tw/power/list2.php?id=2211
沒有問過作者,我自己留下來筆記而已,請勿轉載
利用JAVA操作EXCEL檔
作者:Rubber 文章來源:www-900.ibm.com
訪問次數: 次 加入時間:2004-09-26
2003 年 1 月
使用Windows作業系統的朋友對Excel(試算表)一定不會陌生,但是要使用Java語言來操縱Excel檔並不是一件容易的事。在Web應用日益盛行的今天,通過Web來操作Excel檔的需求越來越強烈,目前較為流行的操作是在JSP或Servlet 中創建一個CSV (comma separated values)檔,並將這個檔以MIME,text/csv類型返回給流覽器,接著流覽器調用Excel並且顯示CSV檔。這樣只是說可以訪問到 Excel檔,但是還不能真正的操縱Excel檔,本文將給大家一個驚喜,向大家介紹一個開放源碼項目,Java Excel API,使用它大家就可以方便地操縱Excel檔了。
JAVA EXCEL API簡介
Java Excel是一開放源碼專案,通過它Java開發人員可以讀取Excel檔的內容、創建新的Excel檔、更新已經存在的Excel檔。使用該API非 Windows作業系統也可以通過純Java應用來處理Excel資料表。因為是使用Java編寫的,所以我們在Web應用中可以通過JSP、 Servlet來調用API實現對Excel資料表的訪問。
現在發佈的穩定版本是V2.0,提供以下功能:
從Excel 95、97、2000等格式的檔中讀取資料;
讀取Excel公式(可以讀取Excel 97以後的公式);
生成Excel資料表(格式為Excel 97);
支援字體、數位、日期的格式化;
支援單格的陰影操作,以及顏色操作;
修改已經存在的資料表;
現在還不支援以下功能,但不久就會提供了:
不能夠讀取圖表資訊;
可以讀,但是不能生成公式,任何類型公式最後的計算值都可以讀出;
應用示例
1 從Excel檔讀取資料表
Java Excel API既可以從本地檔系統的一個檔(.xls),也可以從輸入流中讀取Excel資料表。讀取Excel資料表的第一步是創建Workbook(術語:工作薄),下面的代碼片段舉例說明了應該如何操作:(完整代碼見ExcelReading.java)
import java.io.*;
import jxl.*;
… … … …
try
{
//構建Workbook物件, 唯讀Workbook物件
//直接從本地檔創建Workbook
//從輸入流創建Workbook
InputStream is = new FileInputStream(sourcefile);
jxl.Workbook rwb = Workbook.getWorkbook(is);
}
catch (Exception e)
{
e.printStackTrace();
}
一旦創建了Workbook,我們就可以通過它來訪問Excel Sheet(術語:工作表)。參考下面的代碼片段:
//獲取第一張Sheet表
Sheet rs = rwb.getSheet(0);
我們既可能通過Sheet的名稱來訪問它,也可以通過下標來訪問它。如果通過下標來訪問的話,要注意的一點是下標從0開始,就像陣列一樣。
一旦得到了Sheet,我們就可以通過它來訪問Excel Cell(術語:單格)。參考下面的代碼片段:
//獲取第一行,第一列的值
Cell c00 = rs.getCell(0, 0);
String strc00 = c00.getContents();
//獲取第一行,第二列的值
Cell c10 = rs.getCell(1, 0);
String strc10 = c10.getContents();
//獲取第二行,第二列的值
Cell c11 = rs.getCell(1, 1);
String strc11 = c11.getContents();
System.out.println("Cell(0, 0)" + " value : " + strc00 + "; type : " + c00.getType());
System.out.println("Cell(1, 0)" + " value : " + strc10 + "; type : " + c10.getType());
System.out.println("Cell(1, 1)" + " value : " + strc11 + "; type : " + c11.getType());
如果僅僅是取得Cell的值,我們可以方便地通過getContents()方法,它可以將任何類型的Cell值都作為一個字串返回。示例代碼中Cell (0, 0)是文本型,Cell(1, 0)是數字型,Cell(1,1)是日期型,通過getContents(),三種類型的返回值都是字元型。
如果有需要知道Cell內容的確切類型,API也提供了一系列的方法。參考下面的代碼片段:
String strc00 = null;
double strc10 = 0.00;
Date strc11 = null;
Cell c00 = rs.getCell(0, 0);
Cell c10 = rs.getCell(1, 0);
Cell c11 = rs.getCell(1, 1);
if(c00.getType() == CellType.LABEL)
{
LabelCell labelc00 = (LabelCell)c00;
strc00 = labelc00.getString();
}
if(c10.getType() == CellType.NUMBER)
{
NmberCell numc10 = (NumberCell)c10;
strc10 = numc10.getValue();
}
if(c11.getType() == CellType.DATE)
{
DateCell datec11 = (DateCell)c11;
strc11 = datec11.getDate();
}
System.out.println("Cell(0, 0)" + " value : " + strc00 + "; type : " + c00.getType());
System.out.println("Cell(1, 0)" + " value : " + strc10 + "; type : " + c10.getType());
System.out.println("Cell(1, 1)" + " value : " + strc11 + "; type : " + c11.getType());
在得到Cell物件後,通過getType()方法可以獲得該單格的類型,然後與API提供的基本類型相匹配,強制轉換成相應的類型,最後調用相應的取值方法getXXX(),就可以得到確定類型的值。API提供了以下基本類型,與Excel的資料格式相對應,如下圖所示:
每種類型的具體意義,請參見Java Excel API Document。
當你完成對Excel試算表資料的處理後,一定要使用close()方法來關閉先前創建的物件,以釋放讀取資料表的過程中所佔用的記憶體空間,在讀取大量資料時顯得尤為重要。參考如下代碼片段:
//操作完成時,關閉物件,釋放佔用的記憶體空間
rwb.close();
Java Excel API提供了許多訪問Excel資料表的方法,在這裏我只簡要地介紹幾個常用的方法,其他的方法請參考附錄中的Java Excel API Document。
Workbook類提供的方法
1. int getNumberOfSheets()
獲得工作薄(Workbook)中工作表(Sheet)的個數,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
int sheets = rwb.getNumberOfSheets();
2. Sheet[] getSheets()
返回工作薄(Workbook)中工作表(Sheet)物件陣列,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
Sheet[] sheets = rwb.getSheets();
3. String getVersion()
返回正在使用的API的版本號,好像是沒什麼太大的作用。
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
String apiVersion = rwb.getVersion();
Sheet介面提供的方法
1) String getName()
獲取Sheet的名稱,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
String sheetName = rs.getName();
2) int getColumns()
獲取Sheet表中所包含的總列數,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
int rsColumns = rs.getColumns();
3) Cell[] getColumn(int column)
獲取某一列的所有單格,返回的是單格物件陣列,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
Cell[] cell = rs.getColumn(0);
4) int getRows()
獲取Sheet表中所包含的總行數,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
int rsRows = rs.getRows();
5) Cell[] getRow(int row)
獲取某一行的所有單格,返回的是單格物件陣列,示例子:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
Cell[] cell = rs.getRow(0);
6) Cell getCell(int column, int row)
獲取指定單格的物件引用,需要注意的是它的兩個參數,第一個是列數,第二個是行數,這與通常的行、列組合有些不同。
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
Cell cell = rs.getCell(0, 0);
2 生成新的Excel工作薄
下面的代碼主要是向大家介紹如何生成簡單的Excel工作表,在這裏單格的內容是不帶任何修飾的(如:字體,顏色等等),所有的內容都作為字串寫入。(完整代碼見ExcelWriting.java)
與讀取Excel工作表相似,首先要使用Workbook類的工廠方法創建一個可寫入的工作薄(Workbook)物件,這裏要注意的是,只能通過API 提供的工廠方法來創建Workbook,而不能使用WritableWorkbook的構造函數,因為類WritableWorkbook的構造函數為 protected類型。示例代碼片段如下:
import java.io.*;
import jxl.*;
import jxl.write.*;
… … … …
try
{
//構建Workbook物件, 唯讀Workbook物件
//Method 1:創建可寫入的Excel工作薄
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile));
//Method 2:將WritableWorkbook直接寫入到輸出流
/*
OutputStream os = new FileOutputStream(targetfile);
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(os);
*/
}
catch (Exception e)
{
e.printStackTrace();
}
API提供了兩種方式來處理可寫入的輸出流,一種是直接生成本地檔,如果檔案名不帶全路徑的話,缺省的檔會定位在當前目錄,如果檔案名帶有全路徑的話,則生成的Excel檔則會定位在相應的目錄;另外一種是將Excel物件直接寫入到輸出流,例如:用戶通過流覽器來訪問Web伺服器,如果HTTP頭設置正確的話,流覽器自動調用用戶端的Excel應用程式,來顯示動態生成的Excel試算表。
接下來就是要創建工作表,創建工作表的方法與創建工作薄的方法幾乎一樣,同樣是通過工廠模式方法獲得相應的物件,該方法需要兩個參數,一個是工作表的名稱,另一個是工作表在工作薄中的位置,參考下面的代碼片段:
//創建Excel工作表
jxl.write.WritableSheet ws = wwb.createSheet("Test Sheet 1", 0);
"這鍋也支好了,材料也準備齊全了,可以開始下鍋了!",現在要做的只是實例化API所提供的Excel基本資料類型,並將它們添加到工作表中就可以了,參考下面的代碼片段:
//1.添加Label對象
jxl.write.Label labelC = new jxl.write.Label(0, 0, "This is a Label cell");
ws.addCell(labelC);
//添加帶有字型Formatting的物件
jxl.write.WritableFont wf = new jxl.write.WritableFont(WritableFont.TIMES, 18, WritableFont.BOLD, true);
jxl.write.WritableCellFormat wcfF = new jxl.write.WritableCellFormat(wf);
jxl.write.Label labelCF = new jxl.write.Label(1, 0, "This is a Label Cell", wcfF);
ws.addCell(labelCF);
//添加帶有字體顏色Formatting的物件
jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false,
UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.RED);
jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc);
jxl.write.Label labelCFC = new jxl.write.Label(1, 0, "This is a Label Cell", wcfFC);
ws.addCell(labelCF);
//2.添加Number對象
jxl.write.Number labelN = new jxl.write.Number(0, 1, 3.1415926);
ws.addCell(labelN);
//添加帶有formatting的Number對象
jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##");
jxl.write.WritableCellFormat wcfN = new jxl.write.WritableCellFormat(nf);
jxl.write.Number labelNF = new jxl.write.Number(1, 1, 3.1415926, wcfN);
ws.addCell(labelNF);
//3.添加Boolean對象
jxl.write.Boolean labelB = new jxl.write.Boolean(0, 2, false);
ws.addCell(labelB);
//4.添加DateTime對象
jxl.write.DateTime labelDT = new jxl.write.DateTime(0, 3, new java.util.Date());
ws.addCell(labelDT);
//添加帶有formatting的DateFormat對象
jxl.write.DateFormat df = new jxl.write.DateFormat("dd MM yyyy hh:mm:ss");
jxl.write.WritableCellFormat wcfDF = new jxl.write.WritableCellFormat(df);
jxl.write.DateTime labelDTF = new jxl.write.DateTime(1, 3, new java.util.Date(), wcfDF);
ws.addCell(labelDTF);
這裏有兩點大家要引起大家的注意。第一點,在構造單格時,單格在工作表中的位置就已經確定了。一旦創建後,單格的位置是不能夠變更的,儘管單格的內容是可以改變的。第二點,單格的定位是按照下面這樣的規律(column, row),而且下標都是從0開始,例如,A1被存儲在(0, 0),B1被存儲在(1, 0)。
最後,不要忘記關閉打開的Excel工作薄物件,以釋放佔用的記憶體,參見下面的代碼片段:
//寫入Exel工作表
wwb.write();
//關閉Excel工作薄物件
wwb.close();
這可能與讀取Excel檔的操作有少少不同,在關閉Excel物件之前,你必須要先調用write()方法,因為先前的操作都是存儲在緩存中的,所以要通過該方法將操作的內容保存在檔中。如果你先關閉了Excel物件,那麼只能得到一張空的工作薄了。
3 拷貝、更新Excel工作薄
接下來簡要介紹一下如何更新一個已經存在的工作薄,主要是下面二步操作,第一步是構造唯讀的Excel工作薄,第二步是利用已經創建的Excel工作薄創建新的可寫入的Excel工作薄,參考下面的代碼片段:(完整代碼見ExcelModifying.java)
//創建唯讀的Excel工作薄的物件
jxl.Workbook rw = jxl.Workbook.getWorkbook(new File(sourcefile));
//創建可寫入的Excel工作薄物件
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile), rw);
//讀取第一張工作表
jxl.write.WritableSheet ws = wwb.getSheet(0);
//獲得第一個單格對象
jxl.write.WritableCell wc = ws.getWritableCell(0, 0);
//判斷單格的類型, 做出相應的轉化
if(wc.getType() == CellType.LABEL)
{
Label l = (Label)wc;
l.setString("The value has been modified.");
}
//寫入Excel對象
wwb.write();
//關閉可寫入的Excel對象
wwb.close();
//關閉唯讀的Excel對象
rw.close();
之所以使用這種方式構建Excel物件,完全是因為效率的原因,因為上面的示例才是API的主要應用。為了提高性能,在讀取工作表時,與資料相關的一些輸出資訊,所有的格式資訊,如:字體、顏色等等,是不被處理的,因為我們的目的是獲得行資料的值,既使沒有了修飾,也不會對行資料的值產生什麼影響。唯一的不利之處就是,在記憶體中會同時保存兩個同樣的工作表,這樣當工作表體積比較大時,會佔用相當大的記憶體,但現在好像記憶體的大小並不是什麼關鍵因素了。
一旦獲得了可寫入的工作表物件,我們就可以對單格物件進行更新的操作了,在這裏我們不必調用API提供的add()方法,因為單格已經於工作表當中,所以我們只需要調用相應的setXXX()方法,就可以完成更新的操作了。
盡單格原有的格式化修飾是不能去掉的,我們還是可以將新的單格修飾加上去,以使單格的內容以不同的形式表現。
新生成的工作表物件是可寫入的,我們除了更新原有的單格外,還可以添加新的單格到工作表中,這與示例2的操作是完全一樣的。
最後,不要忘記調用write()方法,將更新的內容寫入到檔中,然後關閉工作薄物件,這裏有兩個工作薄物件要關閉,一個是唯讀的,另外一個是可寫入的。
小結
本文只是對Java Excel API中常用的方法作了介紹,要想更詳盡地瞭解API,請大家參考API文檔,或源代碼。Java Excel API是一個開放源碼項目,請大家關注它的最新進展,有興趣的朋友也可以申請加入這個專案,或者是提出寶貴的意見。
原文地址:http://www-900.ibm.com/developerWorks/cn/java/l-javaExcel/index.shtml
(繼續閱讀...)
文章標籤

羅伯特 發表在 痞客邦 留言(3) 人氣(32,517)

  • 個人分類:Java & JavaScript
▲top
  • 2月 10 週二 200910:05
  • 小棒出生 42 天帥氣泳姿

此篇文章受密碼保護,請輸入密碼後閱讀。
(繼續閱讀...)
文章標籤

羅伯特 發表在 痞客邦 留言(0) 人氣(41)

  • 個人分類:小棒特區
▲top
  • 12月 22 週一 200812:46
  • 2008防毒軟體排行與推薦

有此一言
http://www.wahas.com/viewthread.php?tid=1142077&extra=page%3D1&page=1
 
2008 世界防毒軟體排行
(繼續閱讀...)
文章標籤

羅伯特 發表在 痞客邦 留言(0) 人氣(1,072)

  • 個人分類:MIS大小事
▲top
«1...12131426»

個人頭像

羅伯特
暱稱:
羅伯特
分類:
生活綜合
好友:
累積中
地區:

近期文章

  • 「轉轉東西南北,走走半線古城」轉盤古地圖
  • 點選 "我的文件" 圖示, 卻無法開啟其資料夾 - 解決方法
  • WinXP - 刪除檔案時, 檔案總管(explorer.exe)沒有回應
  • Excel VBA 連線 Oracle - Select 與 Insert 範例
  • Oracle - 基本的Sql編寫注意事項
  • 靈格斯 Lingoes 去彈窗廣告方法
  • 2010 聖誕節的交換禮物(封箱文)
  • Oracle - Merge into 的使用實例
  • 2010/11/23~27 @ 南京
  • 2010/12/03~04 @ 內灣-武林帖

文章分類

toggle 其他興趣 (3)
  • 水草之森 (6)
  • 珍珠派特 (6)
  • 琴動我心 (16)
toggle 不公開 (0)
    • Tools (3)
    • Java & JavaScript (20)
    • Office English (3)
    • MIS大小事 (74)
    • Oracle & Unix (23)
    • 邊遊邊記 (10)
    • 小棒特區 (13)
    • 其他 (13)
    • 帛琉圓夢全記錄 (11)
    • 未分類文章 (1)

    參觀人氣

    • 本日人氣:
    • 累積人氣: