由于DbgridEh 导出 Excel 如果字段长度超过255会截断,所以必须换一种方法来导出,百度 谷歌 看了上百帖,都是有这句:
xlApp := CreateOleObject('Excel.Application');
由于这句代码是要求 客户的电脑上必须有 Office 才行,利用的是OLE技术;
中国的市场是客户电脑上没有Office 但是有WPS,所以带上面那句的代码 都不行,看了很多帖子,发现了一贴很强:
http://blog.sina.com.cn/s/blog_4a8552f80100hee8.html
再客户电脑上没有OFFICE的情况下 除了利用dbgrideh的导出方法,又多了一种导出的方法。代码如下:
另外这里说下dbgrideh 的导出excel,它有两种方式:
1. 客户电脑上有没有Office 都可以,缺陷是 当字段长度 超过255后,会被截断。
SaveDBGridEhToExportFile(TDBGridEhExportAsXLS,TopExportExcelShow,top_file_name,True);
2.要求客户端电脑上必须有Office,实际是 他内部是调用了CreateOleObject('Excel.Application');注意OLE
SaveDBGridEhToExportFile(TDBGridEhExportAsOLEXLS,TopExportExcelShow,top_file_name,True);
新型方法代码如下:
procedure TfrmExportExcel.Excel1Click(Sender: TObject); var MyList: TStringList; MyStr,top_file_name: string; I: Integer; MySaveDialog: TSaveDialog; begin MyList := TStringList.Create; MySaveDialog := TSaveDialog.Create(nil); try //----------------------------- //初始化 MySaveDialog.Filter := 'Excel|*.xls'; MyStr:=''; //----------------------------- //选择文件 if MySaveDialog.Execute then begin top_file_name := MySaveDialog.FileName+'.xls'; end else begin ShowMessage('导出失败'); Exit; end; //----------------------------- //导出表 frmClientDm.ExportExcelShowAdq.DisableControls; for I := 0 to frmClientDm.ExportExcelShowAdq.FieldCount-1 do begin MyStr := MyStr+frmClientDm.ExportExcelShowAdq.Fields[I].DisplayLabel + Char(9); Application.ProcessMessages; end; MyStr := MyStr + #13; frmClientDm.ExportExcelShowAdq.First; while not(frmClientDm.ExportExcelShowAdq.Eof) do begin for I := 0 to frmClientDm.ExportExcelShowAdq.FieldCount-1 do begin MyStr := MyStr + frmClientDm.ExportExcelShowAdq.Fields[I].AsString + Char(9); end; MyStr := MyStr + #13; frmClientDm.ExportExcelShowAdq.Next; Application.ProcessMessages; end; //回到原点 frmClientDm.ExportExcelShowAdq.First; frmClientDm.ExportExcelShowAdq.EnableControls; MyList.Add(MyStr); MyList.SaveToFile(top_file_name); //----------------------------- //提示导出成功 ShowMessage('导出订单表成功'); finally MyList.Free; MySaveDialog.Free; end; end;
本文来自博客园,作者:del88,转载请注明原文链接:https://www.cnblogs.com/del88/p/3897853.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2013-08-07 TActionManager Delphi 超级方便的快捷键 草草