OpenOffice.org note
本網頁以打造無障礙閱讀為目標,可以用任何瀏覽器來觀看本網頁
簡介
- OpenOffice.org 是一套跨平台的辦公室軟體,主要包含了下列軟體:
- Base資料庫管理(相當於MS Access)
- Calc試算表(相當於MS Excel)
- Draw繪圖(相當於MS PhotoDraw)
- Impress簡報(相當於MS PowerPoint)
- Math公式編輯
- Writer文書處理(相當於MS Word)
- OpenOffice.org
是完整的名稱,而非OpenOffice,因為OpenOffice這個名稱早就被註冊走了,其簡稱是OOo。主要任務在創造一個社群,以引領國際化的辦
公室軟體,使其運行在所有主要作業系統平臺,並以APIs與XML為基礎的檔案格式,提供開放且透明的存取方式 。
歷史背景
- 1999年的夏天Sun Microsystems Inc.從德國廠商StarDivision 公司買下已發展十多年的StarOffice5.2。
- 2000年六月Sun Microsystems Inc. 將近780萬行程式的辦公室軟體StarOffice5.2的絕大部分原始碼與相關開發的技術移交給給自由軟體團體OpenOffice.org使用。
- 由於 starOffice 的程式將近 800 萬行,所以當時被號稱世界上最大的開放原始碼的項目,並和 Gnome [kk:nom,原意小妖精]以及
Mozilla 並稱世界開放原始碼的三大主力軟體。
授權
OpenOffice採用自由軟體協會公佈的寬鬆公眾授權(LGPL)以及Sun公司產業標準碼授權(SISSL)雙重授權法,
其用意是一方面同意使用者可以自由的使用OpenOffice.org的軟體,另一方面也允許其他的廠商修改 OpenOffice
的程式碼並商業化而不必公開自己的程式碼。 所以依據SISSL的授權,Sun公司後來推出的 StarSuite
6.0、大陸的RedOffice、Thiz Office、IBM Super Office Suite 等 Office
系列商業軟體都是以OpenOffice的原始程式、API等相關格式為基礎而發展出來的。唯一與OpenOffice.org不同的是,這些廠商修改或
加入了一些額外的功能並且大都是要收費,只不過較為便宜而已。
檔案格式
OpenOffice.org 是以C++撰寫,以XML格式為基礎。
結構化資訊標準推動組織(OASIS)的成員組成了一個工作小組為OpenOffice專案開發一個XML檔格式的規範,透過其他的外掛程式,便可將
OpenOffice的文件轉換成讓PDA或其他流動裝置可閱讀的格式,大大增強了文件的可讀性。這個部分的好處遠高於Microsoft
Office的封閉檔案格式(doc,xls,..)。
如何證明writer的檔案格式為xml
假設現有一檔案為oof.sxw
#cp oof.sxw oof.gz
#unzip -d sxwformat oof.gz
此時可發現sxwformat目錄中都是xml的檔案格式
轉換openoffice格式為文字檔的工具ooo2txt
- ooo2txt可剖析openoffice的xml格式轉出utf-8的文字檔
- ooo2txt有win32的binary格式,與linux上的perl script
- 使用ooo2txt.pl要安裝其cpan的模組
Compress-Zlib-1.16.tar.gz
Archive-Zip-1.02.tar.gz
XML-Twig-3.09.tar.gz
ExtUtils-MakeMaker-6.05.tar.gz
File-Spec-0.82.tar.gz
IO-1.20.tar.gz
Unicode-String-2.06.tar.gz
Unicode-Map-0.112.tar.gz
Unicode-Map8-0.11.tar.gz
Unicode-MapUTF8-1.09.tar.gz
- 安裝perl模組的步驟
#tar xvzf Compress-Zlib-1.16.tar.gz
#cd Compress-Zlib-1.16
#perl Makefile.PL
#make
#make test
#make install
- 轉換的步驟
#perl ooo2txt.pl oof.sxw > utf8.txt
#u8tob5<utf8.txt>big5.txt
Calc
陣列公式(Array Formula)
陣列公式(Array Formula)屬於試算表軟體的進階學習,一般的書籍很難說得清楚,筆者嘗試以幾個簡單的例子來說明之。學習之後在Calc與Excel之上都可以使用喔。
- 陣列公式指的是公式的使用需配合陣列的情形,所謂的公式(Formula)指的就是函數(function)與過濾條件(condition),所謂陣列(Array)指的是一群相鄰的儲存格(cells)。
- 陣列公式輸入後,必須按下Ctrl + Shift + Enter,此時公式兩旁便會出現大括弧將陣列公式包起來,如 {=A2:A4 + B2:B4}。
- 陣列公式除可針對一群相鄰的儲存格設定完全相同的公式之外,也可在單一的儲存格上使用。
一群相鄰的儲存格設定相同的陣列公式
下面給一個學生成績的範例,分別以一般公式與陣列公式計算總分
| 一般公式作法 |
陣列公式作法 |
| |
A |
B |
C |
| 1 |
數學 |
英文 |
總分 |
| 2 |
75 |
70 |
|
| 3 |
80 |
87 |
|
| 4 |
85 |
92 |
|
|
操作步驟:
1
在C2儲存格鍵入下列公式
=a2+b2
2.按下 Enter
3.在C2儲存格右下角Double Click
或將此公式往下拖曳以複製公式
ps.這三個儲存格皆有各自的公式 |
| |
A |
B |
C |
| 1 |
數學 |
英文 |
總分 |
| 2 |
75 |
70 |
|
| 3 |
80 |
87 |
|
| 4 |
85 |
92 |
|
|
操作步驟:
1
拖曳選取從C2到c4的儲存格之後鍵入下列公式
=A2:A4 + B2:B4
2.按下 Ctrl + Shift + Enter
ps.這三個儲存格皆有共同的公式
{=A2:A4 + B2:B4} |
比較上面的範例,可以發現陣列公式必須以大括弧包起來(使用Ctrl+Shift+Enter),而且選取範圍的所有儲存格都有相同的公式設定,與一般儲存格各自有自己的公式不大相同。
另外值得注意的是,一般公式設定完畢之後,若沒有設定保護,常常會誤改到儲存格的值,相對於陣列公式,因為是所有儲存格的共同設定,所以在不小心誤改儲存格的值時,會有提示無法更改的警告訊息,可算是另一種保護公式設定的方法。
單一的儲存格使用陣列公式
下面給一個報價單的總計問題,特別之處在於沒有小計欄
| 一般公式作法 |
陣列公式作法 |
| |
A |
B |
| 1 |
單價 |
數量 |
| 2 |
47 |
7 |
| 3 |
85 |
9 |
| 4 |
82 |
8 |
| 5 |
|
|
| 6 |
總計 |
1750 |
|
操作步驟:
1.在B6儲存格鍵入下列公式
=SUMPRODUCT(A2:A4 ; B2:B4)
2.按下 Enter
ps.
- 此公式等於 A2*B2 + A3*B3 + A4*B4
- 若為Excel,則需將公式中的分號更換為逗號
|
| |
A |
B |
| 1 |
單價 |
數量 |
| 2 |
47 |
7 |
| 3 |
85 |
9 |
| 4 |
82 |
8 |
| 5 |
|
|
| 6 |
總分 |
1750 |
|
操作步驟:
1.在B6儲存格鍵入下列公式
=SUM(A2:A4 * B2:B4)
2.按下 Ctrl + Shift + Enter
ps.
- 此公式等於 A2*B2 + A3*B3 + A4*B4
|
上面問題的解法若採直接加總並不漂亮(=A2*B2+A3*B3+A4*B4),此時可使用函數sumproduct()或改用陣列公式配合sum()函數來處理。
這個範例只能說是同一個問題多了陣列公式的解法,暫時還無法看出其威力,讓我們繼續看下去。
公式參考的條件
下面為薪資欄位條件式加總的問題:
- 求薪資大於500的合計是多少 ? 9500
- 求薪資大於500與薪資小於300的合計是多少 ? 9800
- 計算第2小題的個數是多少 ? 7
| 一般公式作法 |
陣列公式作法 |
| |
A |
| 1 |
薪資 |
| 2 |
500 |
| 3 |
1000 |
| 4 |
200 |
| 5 |
600 |
| 6 |
1200 |
| 7 |
100 |
| 8 |
5000 |
| 9 |
1700 |
| 10 |
400 |
| 11 |
500 |
| 12 |
|
|
1.在A12儲存格中輸入
=SUMIF( A2:A11 ; ">500" )
按下 Enter
2.在A13儲存格中輸入
=SUMIF( A2:A11 ; ">500") + SUMIF( A2:A11 ; "<300")
按下 Enter
3.在A14儲存格中輸入
=COUNTIF( A2:A11 ; ">500") +COUNTIF( A2:A11 ; "<300")
按下 Enter |
| |
A |
| 1 |
薪資 |
| 2 |
500 |
| 3 |
1000 |
| 4 |
200 |
| 5 |
600 |
| 6 |
1200 |
| 7 |
100 |
| 8 |
5000 |
| 9 |
1700 |
| 10 |
400 |
| 11 |
500 |
| 12 |
|
|
1.在A12儲存格中輸入以下二種解法之一
- =SUM( IF(A2:A11>500; A2:A11 ; 0) )
- =SUM( (A2:A11>500) * A2:A11 )
按下 Ctrl + Shift + Enter
2.在A13儲存格中輸入以下三種解法之一
- =SUM( IF(A2:A11>500; A2:A11 ; 0) ) + SUM( IF(A2:A11<300; A2:A11 ; 0) )
- =SUM( (A2:A11>500) * A2:A11) + SUM( (A2:A11<300) * A2:A11)
- =SUM( ( (A2:A11>500) + (A2:A11<300) ) * A2:A11 )
按下 Ctrl + Shift + Enter
3.在A14儲存格中輸入以下二種解法之一
- =SUM((A2:A11)>500*1) + SUM((A2:A11<300)*1)
- =SUM( (A2:A11>500) + (A2:A11<300) * 1 )
按下 Ctrl + Shift + Enter
|
| |
A |
B |
| 1 |
Salary |
Dept. |
| 2 |
$500 |
A |
| 3 |
$1000 |
B |
| 4 |
$200 |
C |
| 5 |
$600 |
D |
| 6 |
$1200 |
C |
| 7 |
$100 |
B |
| 8 |
$5000 |
A |
| 9 |
$1700 |
A |
| 10 |
$400 |
A |
| 11 |
$500 |
C |
| |
|
|
網路資源
主 網 站:http://peterju.notlong.com
(目前轉址至 http://irw.ncut.edu.tw/peterju/)