使用该函数需要先Use Excel2010


//DataSet导出Excel2010格式//FileName=待导出的Excel的文件名,不带路径以及后缀;TitleLine1=导出后Excel第一表头,TitleLine2=Excel第二表头;CellsNames=Excel表格中Field的Title名称;//IsOpen=是否马上打开
procedure sysDSetToXlsx(DSet: TADODataSet;FileName,TitleLine1,TitleLine2:String;CellsNames: TStringList; IsOpen: Boolean = False);      
varExcelApp: TExcelApplication;ExcelWorkBook: TExcelWorkbook;ExcelWorkSheet: TExcelWorksheet;Range: OleVariant;I,RecNo: Integer;TmpPath: string;
begintryExcelApp := TExcelApplication.Create(nil);ExcelWorkBook := TExcelWorkbook.Create(nil);ExcelWorkSheet := TExcelWorksheet.Create(nil);exceptmsgRaise('没有安装office 2007或以上版本,请安装后再试');end;//创建ExcelExcelApp.Connect;ExcelApp.Workbooks.Add(null,0);ExcelWorkBook.ConnectTo(ExcelApp.Workbooks[1]);ExcelWorkSheet.ConnectTo(ExcelWorkBook.Worksheets[1] as _WorkSheet);//构造Excel表头Range := ExcelApp.Range[ExcelWorkSheet.Cells.Item[1,1],ExcelWorkSheet.Cells.Item[2,CellsNames.Count]];Range.MergeCells := True;Range.Font.Size := 18;Range.Font.Bold := True;Range.HorizontalAlignment := 3;   //横向居中,此处如果使用xlCenter报“类Range” 错误 Range.VerticalAlignment := 2;    //竖向居中,此处如果使用xlCenter报“类Range” 错误Range.RowHeight := 40;Range.Cells[1,1] := TitleLine1;     //表头第一行Range := ExcelApp.Range[ExcelWorkSheet.Cells.Item[3,1],ExcelWorkSheet.Cells.Item[3,CellsNames.Count]];Range.MergeCells := True;      //合并Range.Font.Size := 10;Range.Font.Bold := True;Range.HorizontalAlignment := 4;  //同上错误Range.VerticalAlignment := 2;   //同上错误 Range.RowHeight := 20;Range.Cells[1,1] := TitleLine2;     //表头第二行

  Range.Cells[3,1].Select;            //此处两行代码用于冻结头两行
  ExcelApp.ActiveWindow.FreezePanes := True;

for I := 1 to CellsNames.Count dobeginRange.Cells[2,I] := CellsNames.Names[I-1];       //需与DSet的Fields顺序保持一致Range.Columns[I].ColumnWidth  := CellsNames.Values[CellsNames.Names[I-1]];  //Excel文件中的单元格宽,单位为字符.end;RecNo := DSet.RecNo;DSet.DisableControls;DSet.First;while not DSet.Eof dobeginfor I := 1 to CellsNames.Count doRange.Cells[DSet.RecNo + 2, I] := VarToStr(DSet.Fields[I-1].Value);DSet.Next;end;DSet.RecNo := RecNo;DSet.EnableControls;TmpPath := sysGetPath(HInstance) + 'xls\';    //sysGetPath=自定义函数,获取当前路径if not DirectoryExists(TmpPath) thenForceDirectories(TmpPath);ExcelWorkSheet.SaveAs(TmpPath + FileName + '.xlsx');ExcelWorkSheet.Disconnect;ExcelWorkBook.Disconnect;ExcelApp.Quit;    //这句比较重要,很多例子中没有这句,关闭后,进程中还是能够发现Excel进程没有关闭ExcelApp.Disconnect;FreeAndNil(ExcelWorkSheet);FreeAndNil(ExcelWorkBook);FreeAndNil(ExcelApp);if IsOpen thensysExecuteFile(TmpPath + FileName + '.xlsx','','',0);
end;

  

转载于:https://www.cnblogs.com/jupt/p/3922975.html

Delphi Excel操作,写了个ADODataSet转Excel的函数作为后期学习的例子相关推荐

  1. java excel 操作 poi_Java使用apache poi进行excel相关操作

    一.基本介绍 1.1.Apache POI介绍 Apache POI是一个可以进行微软的文档进行开源库,可以操作的文档类型包括word.ppt.excel.visio.outlook.... 本文主要 ...

  2. python学习,pip 模块-数据库(mysql)-excel操作-写日志-邮件-md5加密

    #模块 # 标准模块 # python自带的 # 第三方模块 # pymysql # 自己写的python文件 # 导入模块的实质 # import my_model # 把导入的模块运行了一遍 # ...

  3. 用python处理excel的基本语法_Python对Excel操作详解

    Python对Excel操作详解 文档摘要: 本文档主要介绍如何通过python对office excel进行读写操作,使用了xlrd.xlwt和xlutils模块.另外还演示了如何通过Tcl tco ...

  4. java导入导出excel操作(jxl)

    java导入导出excel操作(jxl) Java解释Excel数据(jxl.jar包的使用) 关键字: java excel jxl.jar jxl.jar 包 下载地址: http://www.a ...

  5. 【Apache POI】Excel操作(四):Excel大数据量的写入

    迷茫代表着你身边还有选择,焦虑意味着你手上还有时间. 有目录,不迷路 前言 超量数据 速率比较 原因剖析 超级版本大救星 往期回顾 前言 之前在下面这期Excel操作: [Apache POI]Exc ...

  6. python excel数据处理教程pdf_python对excel操作详解.pdf

    python对excel操作详解 拟 制 人 胡张东 太仓同维电子有限公司 审 批 人 xxx 测试中心软件测试科 时 间 2013-11-04 Python对Excel操作 详解 文档摘要: 本文档 ...

  7. python在excle教程全集_Python对Excel操作教程

    Python 对 Excel 操作详解 文档摘要: 本文档主要介绍如何通过 python 对 office excel 进行读写操作,使用 了 xlrd . xlwt 和 xlutils 模块. 另外 ...

  8. 用python实现自动化办公------Excel操作

    用python实现自动化办公------Excel操作 用python实现自动化办公------Excel操作 用python实现自动化办公------Excel操作 摘要 一 matplotlib和 ...

  9. ChatGPT与VBA:Excel操作一键搞定的全能助手

    摘要 Excel是一款广泛应用于数据处理和分析的工具,而VBA(Visual Basic for Applications)是一种用于编程自动化Excel操作的语言.然而,对于非专业的Excel用户来 ...

最新文章

  1. 自律到极致-人生才精致:第11期 - 领奖通知
  2. Understanding Clouds from Satellite Images比赛的discussion调研与colab数据集下载配置
  3. 动态决定viewarea应该加载哪个view
  4. c语言 编程 牛顿迭代,C语言编写牛顿迭代法的跟踪
  5. c#a服务器上传文件b服务器,C#_c#批量上传图片到服务器示例分享,客户端代码: 复制代码 代码 - phpStudy...
  6. [PAL规范]SAP HANA PAL演绎推理算法Apriori编程规范APRIORIRULE
  7. Flex RemoteClass ActionScript类与Java类的绑定
  8. java管理分类编写_java029学生管理系统的编写
  9. oracle写完存储过程之后,oracle存储过程和自定义函数
  10. input只改变光标的颜色 不改变字的颜色
  11. 条件GAN论文简单解读
  12. 使用python解决算法和数据结构--使用栈实现进制转换
  13. 虚拟偶像春天来临,谁能从中脱颖而出?
  14. react + antd table +hooks 如何实现表格序号自增 翻页后序号不从1开始算起
  15. IDEA2022 提示:更新 TKK 失败,请检查网络连接
  16. Metasploit渗透测试魔鬼训练营
  17. r计算百分位数_R中产生的分位数和百分位数之间的差异
  18. 【调试】sysRq按键使用方法
  19. 搭建一个PHP后台的开发环境你所需要配置东西都有哪些?XAMPP问题
  20. 异常记录 之 nested exception is java.lang.NoClassDefFoundError: com/lowagie/text/pdf/PdfContentByte

热门文章

  1. 一次违反常规的Java大厂面试经历,你还看不懂吗?
  2. 意外收获字节跳动内部资料,Android岗
  3. CyberDuck:Macos和Linux服务器简洁传大文件
  4. android menu点击事件6,Android Menu
  5. 浅析商城网站建设需要注意哪些细节内容呢?
  6. 企业日常选择网站制作公司大多从这三方面着手
  7. 浅析企业网站建设潜在价值有哪些?
  8. 网站采集内容对优化工作很有帮助
  9. mysql 5.6.29编译安装_MySQL-5.6.29源码编译安装记录
  10. 开发日记-20190903 关键词 C程序gcc编译过程