OpenOffice.org note

本網頁以打造無障礙閱讀為目標,可以用任何瀏覽器來觀看本網頁


簡介

歷史背景

授權

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

  1. ooo2txt可剖析openoffice的xml格式轉出utf-8的文字檔
  2. ooo2txt有win32的binary格式,與linux上的perl script
  3. 使用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
  4. 安裝perl模組的步驟
    #tar xvzf Compress-Zlib-1.16.tar.gz
    #cd Compress-Zlib-1.16
    #perl Makefile.PL
    #make
    #make test
    #make install
  5. 轉換的步驟
    #perl ooo2txt.pl oof.sxw > utf8.txt
    #u8tob5<utf8.txt>big5.txt

Calc

陣列公式(Array Formula)

陣列公式(Array Formula)屬於試算表軟體的進階學習,一般的書籍很難說得清楚,筆者嘗試以幾個簡單的例子來說明之。學習之後在Calc與Excel之上都可以使用喔。

一群相鄰的儲存格設定相同的陣列公式

下面給一個學生成績的範例,分別以一般公式與陣列公式計算總分

一般公式作法 陣列公式作法
  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.

  1. 此公式等於 A2*B2 + A3*B3 + A4*B4
  2. 若為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.

  1. 此公式等於 A2*B2 + A3*B3 + A4*B4

上面問題的解法若採直接加總並不漂亮(=A2*B2+A3*B3+A4*B4),此時可使用函數sumproduct()或改用陣列公式配合sum()函數來處理。

這個範例只能說是同一個問題多了陣列公式的解法,暫時還無法看出其威力,讓我們繼續看下去。

公式參考的條件

下面為薪資欄位條件式加總的問題:

  1. 求薪資大於500的合計是多少 ?  9500
  2. 求薪資大於500與薪資小於300的合計是多少 ?  9800
  3. 計算第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儲存格中輸入以下二種解法之一

  1. =SUM( IF(A2:A11>500; A2:A11 ; 0) )
  2. =SUM( (A2:A11>500) * A2:A11 )
    按下 Ctrl + Shift + Enter

2.在A13儲存格中輸入以下三種解法之一

  1. =SUM( IF(A2:A11>500; A2:A11 ; 0) ) + SUM( IF(A2:A11<300; A2:A11 ; 0) )
  2. =SUM( (A2:A11>500) * A2:A11) + SUM( (A2:A11<300) * A2:A11)
  3. =SUM( ( (A2:A11>500) + (A2:A11<300) ) * A2:A11 )
    按下 Ctrl + Shift + Enter

3.在A14儲存格中輸入以下二種解法之一

  1. =SUM((A2:A11)>500*1) + SUM((A2:A11<300)*1)
  2. =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/) Sitetag Logo

Level Triple-A conformance icon | [歡迎使用任何作業系統、瀏覽器觀看!] | Valid XHTML 1.0 Transitional | Valid CSS! | [Valid RSS] | [創意公眾許可証]
This work is licensed under a Creative Commons License