社区
Delphi
帖子详情
Excel导入文本文件
hsmserver
2004-08-06 12:12:20
我用的是‘|’的分割符
通过控制EXCEL的宏导入有个参数一直设置不好
请问有没有更好的办法
能实现就行
...全文
200
5
打赏
收藏
Excel导入文本文件
我用的是‘|’的分割符 通过控制EXCEL的宏导入有个参数一直设置不好 请问有没有更好的办法 能实现就行
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hsmserver
2004-08-07
打赏
举报
回复
其实遇到的真正问题是这样的
将DATASET的结果集导出到EXCEL上的某个单元
并且要进行合并、画线、居中等操作
通过OLE实现了功能但是速度很慢
所以想找一个速度比较快的方法
一些SQL导出的方法却遇到这样的问题:数据字段不全,或者数据记录不全 //我用的表字段比较多
所以我改用生成文本然后再导入到EXCEL
速度肯定可以改观,EXCEL宏是这样的:
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Documents and Settings\Administrator\My Documents\sql.txt", _
Destination:=Range("A1"))
.Name = "sql"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = xlWindows
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileOtherDelimiter = "|"
.TextFileColumnDataTypes = Array(1,1,1,1)
.Refresh BackgroundQuery:=False
End With
问题就在这了 Array(1,1,1,1)
如果有多少列“|”就有几个1 VB可以这样写Array(1,1,1,1)
但DELPHI就不可以
我这样写了但是不成;
var ia:array of integer;
i,Num:integer;
begin
Num:=值 ;
setLength(Ia,num)
for i:=0 to num-1 do
IA[i]:=1;
end;
.TextFileColumnDataTypes
的类型又不认IA
所以还是不成
哪位高手能帮忙解决一下
或者有什么好的办法吗?
fhuibo
2004-08-07
打赏
举报
回复
我这里是SQL 导出到 EXCELL和文本的 可以参考:不行的话再帮你看 EXCELL 导出文本:
procedure TFormDataExp.DataToExcel(aPath: string);
var
s, xlsConnstr: string;
begin
xlsConnstr := 'Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=' + aPath + ';Persist Security Info=False';
s := 'Select * Into [sheet1] FROM '+ FMySQLStrList.Strings[ComboBoxTable.ItemIndex] + ' IN [ODBC]'
+ ' [ODBC;Driver=SQL Server;UID=sa;PWD=;Server=127.0.0.1;DataBase=HT01;]';
try
ADOConnecSQLServer.ConnectionString := xlsConnstr;
ADOConnecSQLServer.Connected := true;
ADOConnecSQLServer.Execute(s);
Application.MessageBox('导出Excel成功!','信息!',mb_ok + mb_iconinformation);
ADOConnecSQLServer.Connected := false;
except
Application.MessageBox('导出Excel失败','信息!',mb_ok+mb_iconstop);
ADOConnecSQLServer.Connected := false;
end;
end;
procedure TFormDataExp.DataToTxt(aPath: string;aStr: string);
var
s,txtConnstr: string;
MyIniFile: TiniFile;
MyPath, MyStr: string;
begin
MyPath := ExtractFilePath(aPath);
MyIniFile := TiniFile.Create(MyPath + 'schema.ini');
MyIniFile.WriteString(Copy(aPath,length(MyPath)+ 1,length(aPath)-length(MyPath)),'ColNameHeader','True');
if aStr = 'Tab' then
begin
MyStr := StringReplace(aStr, 'Tab', #9, [rfReplaceAll]);
end
else
begin
MyStr := aStr;
end;
MyIniFile.WriteString(Copy(aPath,length(MyPath)+ 1,length(aPath)-length(MyPath)), 'Format', 'Delimited('+ MyStr + ')');
MyIniFile.Free;
txtConnstr := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ MyPath + ';Mode=Share Deny None;Extended Properties="text;HDR=YES;FMT=Delimited";Persist Security Info=False';
s := 'Select * Into ' + Copy(aPath,length(MyPath)+ 1,length(aPath)-length(MyPath)) + ' FROM '+ FMySQLStrList.Strings[ComboBoxTable.ItemIndex] +' IN [ODBC]'
+ ' [ODBC;Driver=SQL Server;UID=sa;PWD=;Server=127.0.0.1;DataBase=HT01;]';
try
ADOConnecSQLServer.ConnectionString := txtConnstr;
ADOConnecSQLServer.Connected := true;
ADOConnecSQLServer.Execute(s);
Application.MessageBox('导出文本成功!','信息提示!',MB_OK + mb_iconinformation);
ADOConnecSQLServer.Connected := false;
except
Application.MessageBox('导出文本失败!','错误!',MB_OK+MB_ICONSTOP);
ADOConnecSQLServer.Connected := false;
end;
end;
数字蛋糕
2004-08-07
打赏
举报
回复
最简单的就是用Tab键:#9
oioioi-090
2004-08-06
打赏
举报
回复
没做过,帮顶!
hsmserver
2004-08-06
打赏
举报
回复
高手帮个忙
mysql
导入
文本或
excel
文件
mysql
导入
文本或
excel
文件 mysql
导入
文本或
excel
文件 mysql
导入
文本或
excel
文件 mysql
导入
文本或
excel
文件
通用文件筛选工具(批量查询按行存储的
文本文件
,并
导入
EXCEL
表中)
使用说明 : 1、本程序可以作什么? 本程序功能分为两个部分: 一部分是:批量查找指定路径下的文件中的内容中,是否包含要查询的项目。并把查询出的内容分文件存储。 一部分是:将
文本文件
导入
EXCEL
中,可以将上一步查找的结果
导入
,也可以自己选择文件
导入
(支持多选)。 2、如何使用他? a、批量查找: 首先,在“读入位置”按钮处设置你所要读取的文件的存放位置,此时程序会自动读入此文件夹下所有文件,以供选择;其次,用“>>”或“>”将要读取的文件选入读取队列,当然如果选错了可以用“<<”或“<”删除队列,或者鼠标双击选中项删除;再次,点击“+”按钮,添加查找项目到查找项目列表,一次只可以添加一条,如需添加多条则需要重复添加操作;如果添加错误可以双击选中项删除或选中后点击“-”按钮。最后,点击“开始查找”,程序将会把查找结果输出保存到指定路径下面的output文件夹下面,你可以选择是否打开目录查看。如果需要查询的文件有文件头,可以选择“保留文件首行”。 b、
EXCEL
导入
: 首先,选择
导入
方式,
导入
方式分为“查询结果
导入
”和“新选文件
导入
”两种;当选择“查询结果
导入
”时,本程序将把“读入位置”处“output”文件夹下文件批量
导入
EXCEL
。当选择“新选文件
导入
”时,本程序在点击“开始
导入
”时将弹出窗口,您可以自己选择需要
导入
文件(支持多选),
导入
EXCEL
。其次,设置
导入
文件时的分割符,默认为“|”,本程序只支持按照分隔符
导入
。最后,点击“开始
导入
”按钮开始
导入
。 3、本程序不判断所查找的文件类型 由于本程序在读入文件时,并没有校验文件的内容和文件类型,因此本程序会读取用户所选择的任意文件,即使此文件是二进制格式的。不论是查询或者是
导入
功能都是这样。本程序将按行读取所选择的文件(或者有换行符的),在读取完文件后,无论是否找到,都会创建和源文件相同类型的文件,即使是.exe或.rar(一般是打不开的),文件名存储为“output”+原文件名。即使没有找到任何相匹配的内容,本程序也会创建文件,这时后文件大小是0字节,可以按照大小排列看到。 4、请使用“清除文件”按钮及时清除查询结果 程序在查询和创建文件的过程中,不会判断是否已经执行过查询操作。如果已经执行过查询操作,“output”文件夹下就会存在查询出的文件,当再次执行查询时,本程序会在已存在的文件后追加查询结果。这样就会出现重复的记录或内容。因此,当需要多次查询时,每次查询前需要点击“清空文件”按钮删除output文件夹,才能保证查找的准确。 5、本程序不会判断运行的环境,因此在运行过程中可能会有些未知的错误 本程序在win7环境,vs2012,Netframe4.0下编译通过。本程序支持winxp及以上操作系统。执行
EXCEL
导入
的时候,需要安装Office。Office的版本在2003以上就可以。但是不同我Office版本对
导入
性能,有一定的影响。
Excel
2003,最多256列,即2的8次方,最多65536行,即2放入16次方;
Excel
2007及以上版本,最多16384列,即2的14次方,最多1048576行,即2的20次方。因此如果需要
导入
的单个文件的行数或者列数,超过了所安装Office版本的最多行列数,程序将会报错!
Excel
导入
CSV文件
NULL 博文链接:https://hellosoft.iteye.com/blog/559700
有文本格式的
excel
文件
导入
sqlserver
在网上看到许多关于
excel
文件
导入
到sqlserver数据库中的例子,不是很全还有许多有错误的,本人经过搜集现分享自己写的代码,注意:此
excel
文件为有文本格式的,不是循环每行
导入
的!
文本,
Excel
导入
导出到SQL数据库
文本,
Excel
导入
导出到SQL数据库:
文本文件
和
Excel
文件
导入
导出到数据库
Delphi
5,388
社区成员
262,730
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章