我发现很多朋友都喜欢把各种报表格式,以Excel的形式导出,以便于二次修改及储存。笔者也曾使用过在Excel中用VB编程的方法进行导出,用过好几年,始终觉得效率不佳。经过一段时间的研究,现隆重推出我最近在用的方式给大家。
前期准备工作(包括相关工具或所使用的原料等)
编程语言及版本:Delphi 2010数据库语言及版本:SQL 2008Excel 2003第三方控件:FlexCel详细的操作方法或具体步骤
控件部分1:先安装FlexCel控件,并引入安裝路径。

控件部分2:在DFM窗体,加入FlexCelReport、XLSAdapter及FlexCelImport三个控件。

Excel部分1:首先,设置好报表格式,本例格式如图。

Excel部分2:定义数据导出区域(例中为选中A1:P7):在菜单中依次选择插入>>名称>>定义。


Excel部分3:在弹出的窗口中,输入“__main__”(此项固定),单击添加按钮,再按确定按钮。

Excel部分4:重中之重:定义关联query的数据导出项(例中为选中A4:P4),导出Excel时,会自动显示所有记录行。

Excel部分5:在弹出的窗口中,输入“__qyXSmaster__”(例中的qyXSmaster为用户自定义项,即为query的名称),单击添加按钮,再按确定按钮。

Excel部分6:设置数据列,以便于对应query中的例名并导出相应数据。格式为##qyXSmaster(query名称)##ilab_name(列名),记得一定要打上两个#。至此,Excel的部分已经设置完毕。

代码部分:接下来,为代码实现部分。在导出按钮中,参照代码如下:
procedure TfmSM310.muN4Click(Sender: TObject);
var dir :string;
begin
Screen.Cursor :=crHourglass;
qytemp2.Close;
qytemp2.ParamByName('mo_no').AsString :=mo_no; //mo_no为条件参数
qytemp2.Open;
dir :=GetCurrentDir; //获取导出路径
if fileexists(dir+'\SamplesItem_1.xls') then
deletefile(dir+'\SamplesItem_1.xls'); //如导出路径中已存在导出文件,先删除;
FlexcelReport1.FileName :=dir+'\SamplesItem_1.xls'; //预定义导出文件名
FlexcelReport1.Template :=reportpath+'SamplesItem.xls'; //设置加载模板名
try
FlexcelReport1.Run;
finally
Screen.Cursor :=crDefault;
end;
ShellExecute(0, nil, PChar(dir+'\SamplesItem_1.xls'), nil, nil, SW_SHOWNORMAL);
Screen.Cursor :=crDefault;
end;
结后语:设置有些繁锁,还请静下心来慢慢操作。如有疑问,欢迎留言讨论。不要忘了给我好评哦~

注意事项
设置数据列时,一定要对应query中的列名,否则导出时会报错。如果提示有列名错误,可直接修改模板,保存后再次导出即可看到效果,无须重新编译程序。经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。作者声明:本教程系本人依照真实经历原创,未经许可,谢绝转载。- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
