DbgridEh 导出 Excel 如果字段长度超过255会截断,那如何导出,另一种神奇的方法
由于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;
DbgridEh 导出 Excel 如果字段长度超过255会截断,那如何导出,另一种神奇的方法的更多相关文章
- EXCEL某列长度超过255个字符导入SQL SERVER的处理方法
问题描述: [Excel 源 [1]] 错误: 输出“Excel 源输出”(9) 上的 输出列“Description 3”(546) 出错.返回的列状态是:“文本被截断,或者一个或多个字符在目标代码 ...
- EXCEL某列长度超过255个字符导入SQL SERVER2005的处理方法
将注册表中 Jet引擎. HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Jet/4.0/Engines/Excel 如果是:ACE引擎. HKEY_LOCAL_MACHI ...
- C#中用OLEDB操作EXCEL时,单元格内容长度超过255被截断
C#中Microsoft.ACE.OLEDB.12.0 驱动读取excel,会读取前8行来判定每列的数据类型,假如没有超过255个字符,那么会被设置为nvarchar(255),从第9行开始,超过25 ...
- 用OLEDB读取EXCEL时,单元格内容长度超过255被截断
https://support.microsoft.com/zh-cn/help/189897/data-truncated-to-255-characters-with-excel-odbc-dri ...
- c# word操作篇,解决字符串长度超过255就不能替换的问题
本文使用的是Microsoft.Office.Interop.Word组件,必须在系统安装了office相关组件的条件下进行,在com里面找到Microsoft Word 16.0 Object L ...
- C#导出Excel,某单元格内容长度超过255 的解决方法
public static void ToExcel(DataTable dtSource, string strPath, string strSheetName) { System.Data.Ol ...
- ora 32021 设置参数时参数值长度超过255处理办法
alter system set db_file_name_convert='AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA-.' scope=spfi ...
- POI导出excel,本地测试没问题,linux测试无法导出
java.lang.RuntimeException: java.io.IOException: No such file or directory at org.apache.poi. ...
- SSIS ->> Excel Destination无法接受大于255个字符长度的字符字段(转载)
从下文的链接中找到一些背景,因为Excel会以前8行作为参考,如果某个字段前8行的最长长度没有超过255个字符,就会报错.如果知道某个字段属于描述性字段,而且字段的数据长度很可能超过255个字符长度, ...
- SSIS ->> Excel Destination无法接受大于255个字符长度的字符字段
从下文的链接中找到一些背景,因为Excel会以前8行作为参考,如果某个字段前8行的最长长度没有超过255个字符,就会报错.如果知道某个字段属于描述性字段,而且字段的数据长度很可能超过255个字符长度, ...
随机推荐
- Spring boot 自定义kafkaTemplate的bean实例进行生产消息和发送消息
本文为博主原创,未经允许不得转载: 目录: 1. 自定义生产消息 kafkaTemplate 实例 2. 封装 kafka 发送消息的service 方法 3. 测试 kafka 发送消息ser ...
- Blazor模式讲解
Blazor的三种模式 Blazor Server: Blazor Server在 ASP.NET Core 应用中支持在服务器上托管 Razor 组件. 可通过 SignalR 连接处理 UI 更新 ...
- DC逻辑综合工具简介-Design Compiler
逻辑综合简介 逻辑综合:代码转变为网表 FPGA:代码转变为FPGA内部的数字单元 在进行综合的时候往往会使用一些脚本工具 需要学会看综合之后的报告 1.目标 进行综合需要读入RTL设计,还需要用到f ...
- 问题--缺少 cryptography 包
1.问题 raise RuntimeError( RuntimeError: 'cryptography' package is required for sha256_password or cac ...
- printf 函数格式控制
Printf()介绍 printf()是C语言标准库函数,用于将格式化后的字符串输出到标准输出.标准输出,即标准输出文件,对应终端的屏幕.printf()申明于头文件stdio.h. 函数原型: in ...
- [java] JSP post 提交乱码 解决方案
//在post提交的页面顶部插入下列代码 <% request.setCharacterEncoding("UTF-8"); %>
- Jrebel与Xrebel教学
简介 JRebel和XRebel是两个非常有用的工具,可以显著提升Java开发人员的生产力和应用程序性能. JRebel是一个强大的Java开发工具,它允许开发人员在不重新启动应用程序的情况下进行代码 ...
- [转帖]《Linux性能优化实战》笔记(三)—— CPU 上下文切换(下)
上篇介绍了三种CPU 上下文切换以及它们可能造成的问题和原因,这一篇来看看在系统中如何发现CPU 上下文切换问题. 一. 查看上下文切换情况 主要使用两个命令:vmstat以及之前用过的pidstat ...
- [转帖]S3FS 简介及部署
PS:文章一般都会先首发于我的个人Blog上:S3FS 简介及部署 · TonghuaRoot's BloG. ,有需要的小伙伴可以直接订阅我的Blog,获取最新内容. 0x00 前言 S3FS可以把 ...
- [转帖]sqlserver on linux vs windows
简单对比下sqlserver on windows与linux的特点,发现新的继续添加 对比项 sqlserver on windows sqlserver on Linux 备注 费用 需要wind ...