2014/03/20

TExcelWorksheet 取值

在開始介紹 ExcelWorksheet 如何取值前,我們要先了解 Excel 的專業術語:



上面的「A、B、C」是 Column,座標軸 X,以下用 COL 表示。
左邊的「1、2、3」是 Row,座標軸 Y,以下用 ROW 表示。

所以我們通常會使用座標方式來指定游標所在的位置,常見用語有使用名稱「C3」或座標值「3, 3」之類的表達方式。

在這邊要注意的是,在Excel中座標的表示法是「ROW, COL」。並不是常見的「COL, ROW」

所以我們得知 ExcelWorksheet 的座標取值方法是:

ExcelWorksheet.Cells.Item[ROW, COL]

要使用名稱定義也可以,以下都是正確的作法

//property Range[Cell1: OleVariant; Cell2: OleVariant]: ExcelRange read Get_Range;
ExcelWorksheet.Cells.Range['A1', EmptyParam].Value;
ExcelWorksheet.Cells.Range['A1',       'A1'].Value;
ExcelWorksheet.Cells.Range['A1', EmptyParam].Value2;
ExcelWorksheet.Cells.Range['A1',       'A1'].Value2;

請注意!參數Cell1, Cell2不能為數字,也不能為 nil,否則會報 「OLE error XXXXXXXX」 的錯誤!


追加補充,如何取得 ExcelWorksheet 的列印範圍:

ExcelWorksheet.UsedRange[_LCID].Columns.Count
ExcelWorksheet.UsedRange[_LCID].Rows.Count

到這邊為止,已經可以處理絕大部分Excel檔案匯入的工作了。

想知道 ExcelWorksheet更多的功能嗎?去找吧,所有功能屬性都寫在 ExcelWorksheet 的元件裡!

2014/03/18

ExcelXP TExcelWorksheet 連結 Worksheet

 前情提要:
1.      使用 Delphi ExcelXP 元件開啟 Excel 和活頁簿(Workbook)
2.      把開啟的 Excel 和活頁簿關閉

這一節我們要聊的是「工作表」(Worksheet) 連結 (是的,不含操作)

ExcelWorksheet 這個元件的連結方式比較特別,它必須:
1.      先指定前一節已開啟的ExcelWorkbook 指向哪一個 Worksheet
語法如下:
ExcelWorkbook.Worksheet[________]

        這邊的填空處可以放兩種類型,一種是文字,另一種就是數字:
        也就是 Worksheet 的「名字」或「排列的序號」
       
        以這個例子來說,我們要開啟「Sheet3」時,程式可以這麼寫:
        ExcelWorkbook.Worksheet[Sheet3]
       
        ExcelWorkbook.Worksheet[2]
        序號是按左至右,從 1 起始。

2.      ExcelWorksheet 元件連結或轉型後立即使用
I.            ExcelWorksheet 元件連結:(經常呼叫時使用)
ExcelWorksheet.ConnectTo(ExcelWorkbook.Worksheet[Sheet3] as _Worksheet);
II.         轉型後立即使用:(臨時呼叫時使用)
(ExcelWorkbook.Worksheet[Sheet3] as _Worksheet).ExcelWorksheet屬性

        例如:
    ExcelWorksheet.ConnectTo(ExcelWorkbook.Worksheet[Sheet3] as _Worksheet);
   _YYYMM := ExcelWorksheet.Cells.Item[y, x];
    _CONNO := ExcelWorksheet.Cells.Item[y1, x1];
   
    _CURID := (ExcelWorkbook.Worksheet[Sheet3] as _Worksheet).Cells.Item[y1, x1]


        不知道 Cells, Item 的屬性也沒有關係,下一節我們會再聊到。

2014/03/12

無狀態的DataSnap寫法參考

由於DCOM可以在網際網路直接傳送 OleVariant,所以有網友提出這個方案,可擴充機能很高。

努力學習中!

※※※ 已經 2014 年 4 月份完成 COM / RESTful 中間層的建置,目前看起來還是 COM 版的 DataSnap 效能要好。 ※※※

資料來源:

2014/03/10

悲劇的版本 Delphi 2009

悲劇的版本 Delphi 2009

就我印象所知,它是第一個支援 Unicode 的版本,也是被駡最慘的一個版本
(當時我以為 Delphi 2006 年版已經是爛中極致)

當我還不信邪的要使用它的時候,才知道這箇中奧秘

Web page design tool in Delphi

Delphi 在2009 版開始把 WebSnap 廢棄後,自此就再也沒有自帶「網頁設計工具」。 有的話也只剩下自帶的 IntraWeb Evolution 版本。 以及 3rd party 的 UniGui 等類似 IntraWeb 的 Web Application ...