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;
//网友自己去理解吧