delphi呼叫libxl.dll讀寫XLS檔案
阿新 • • 發佈:2021-08-22
偶爾發現一個比較好用的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; //網友自己去理解吧