1. 程式人生 > 其它 >delphi呼叫libxl.dll讀寫XLS檔案

delphi呼叫libxl.dll讀寫XLS檔案

偶爾發現一個比較好用的XLS檔案讀寫外掛,下載的壓縮包裡有Delphi的示例,最新版本有Delphi7和Delphi12的例子,區別在於ANSI與UTF-8的支援。這個示例下有API呼叫的Pas檔案, 最新版本可以從以下網站下載:http://www.libxl.com/。這個外掛不是免費的,但是不交費也幾乎沒有限制,僅是在生成的XLS檔案里加了一行要求註冊交錢的文字。讀寫XLS檔案的免費控制元件、原始碼比較多,LibXL地位比較尷尬,所以也就這樣限制了。這個外掛好處是速度比OLE操作快,不需要安裝Office就可以執行。下面簡單說下怎麼使用:

uses  LibXL;
{最基本的用法}
var
  Book: TXLBook;
  Sheet: TXLSheet;
  dateFormat: TXLFormat;
begin
  Book := TBinBook.Create;//97版,XLS檔案模式
  //Book := TXMLBook.Create;//這個是2007版,XLSX格式
  Book.setKey('zhangyb','windows-2125210d01cae20e61b46b63a7per5gd');
//如果不註冊就不需要這一行
  Sheet := Book.addSheet('Sheet1');
  Sheet.writeStr(2, 1, 'Hello, World !');//寫入文字
  Sheet.writeNum(3, 1, 1000);//寫入數字
  dateFormat := Book.addFormat();
  dateFormat.setNumFormat(NUMFORMAT_DATE);
  Sheet.writeNum(4, 1, Book.datePack(2008, 4, 29), dateFormat);
  Sheet.setCol(1, 1, 12);
  Book.save('example.xls');
  ShellExecute(0, 'open', 'example.xls', nil, nil, SW_SHOW);
  Book.Free;
end;
{設定字型}
var
  Book: TXLBook;
  Sheet: TXLSheet;
  Font: TXLFont;
  Format: TXLFormat;
begin
  Book := TBinBook.Create;

  Font := Book.addFont;
  Font.size := 36;

  Format := Book.addFormat();
  Format.alignH := ALIGNH_CENTER;
  Format.setBorder(BORDERSTYLE_MEDIUMDASHDOTDOT);
  Format.setBorderColor(COLOR_RED);
  Format.font := Font;

  Sheet := Book.addSheet('Sheet1');
  Sheet.writeStr(2, 1, 'Format', Format);
  Sheet.setCol(1, 1, 25);

  Book.save('format.xls');
  ShellExecute(0, 'open', 'format.xls', nil, nil, SW_SHOW);
  Book.Free;
end;
//使用起來真的很簡單

其他的例子就不一一列舉,有興趣的網友可以自行下載。

上面一不小心給出了註冊碼,奉獻以下演算法:

uses System.Hash,System.StrUtils;
function GetRegCode(username:string);
var
  UserMD5:string;
  md5:THashMD5;
  i:integer;
  RegCode:string;
begin
  RegCode:='2 2 2 0 0 c e 0 6 b 6 6 a p r g ';
  UserMD5:=md5.GetHashString(ReverseString(username));
  for I := 0 to 15 do
     RegCode[i*2+2]:=UserMD5[i+1];
  Result:='windows-'+RegCode;
end;
//網友自己去理解吧