DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: kebingoo
今日帖子: 3
在线用户: 2
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 ccxpts (渔夫) ★☆☆☆☆ -
普通会员
2017/4/27 21:41:07
标题:
服务程序多线程环境下读取excel,用那种办法合适? 浏览:1691
加入我的收藏
楼主: 我有一个服务程序,要下excel文件并打开读入数据到数据库,对excel读取该用那种方法好:
1-COM,服务器要安装msoffice
2-ADO,视excel为一个表
3-tms XlsImport控件
4-Dev dxSpreadSheet
还有啥好的方法,请兄弟们赐教!
----------------------------------------------
-
作者:
男 ccxpts (渔夫) ★☆☆☆☆ -
普通会员
2017/4/27 22:02:46
1楼: uses ComObj;
  Conn: TADOConnection;  
  qry: TADOQuery; 
  
var  
  Excel: OLEVariant;  
  ExcelVersion: string;  
begin  
  try  
    Excel := CreateOLEObject('EXCEL.Application');  
    ExcelVersion := Excel.version;  
  finally  
    Excel.Quit;  
    Excel := UnAssigned;  
  end;  
  Conn.Close;  
  
  if ExcelVersion = '11.0' then  
    //Excel2003及早期的版本  
    Conn.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' 
      + filename + ';Extended Properties=excel 8.0;'
      + 'Persist Security Info=false;'    
  else //Excel2007及以后的版本  
     Conn.ConnectionString:='Provider=Microsoft.ACE.OLEDB.12.0;Data Source='
       + filename + ';Extended Properties=excel 12.0;'
       + 'Persist Security Info=True'; //注意不能为false  
  
  Conn.LoginPrompt:=false;  
  Conn.Connected:=true;  
  qry.Connection:=Conn;  
  qry.close;  
  qry.SQL.Clear;  
  qry.SQL.add('select * from ['+sheet1+'$]');  
  qry.Active:=true;  
  ...  
end;
----------------------------------------------
-
作者:
男 vmao (毛小毛) ★☆☆☆☆ -
盒子活跃会员
2017/4/27 22:16:05
2楼: nativeexcel效率高,速度快,公式支持更好,使用方便。缺点是最高只支持到XE4。其次是TMS的Flexcel,写起来相对麻烦,效率还可以,公式支持不是最好,但只要不是太复杂基本也能应付。

COM方式多用户读取速度巨慢,占用内存,容易弄不好要死进程。OLEDB方式有可能会读取错误,比如:工号0开头的,有可能当做数字的时候就读不到前置的0字符了,还有比如手机号码,有可能搞成科学计数什么的。这两种方式都不推荐使用。
----------------------------------------------
-
作者:
男 herui (hi) ★☆☆☆☆ -
普通会员
2017/4/28 7:14:53
3楼: xlsreadwrite不错
----------------------------------------------
delphier
作者:
男 star5 (星五) ★☆☆☆☆ -
盒子活跃会员
2017/4/28 8:01:40
4楼: nativeexcel3.1.0我在d10.1下使用良好,32和64位下也正常。
xlsreadwriteii5或者6也都还行,以前用的比较多,一些小功能比较方便。
----------------------------------------------
博客 - http://offeu.com
脚本模型 - http://webpascal.com
需要短信接口的请联系我,可发行业与营销内容。
作者:
男 earthsbest (全能中间件) ▲▲▲▲△ -
普通会员
2017/4/28 15:42:40
5楼: 推荐NativeExcel,
NativeExcel3.1.0 在10.2下使用正常。
----------------------------------------------
Delphi4Linux Delphi三层/FireDAC 技术群:734515869 http://www.cnblogs.com/rtcmw
作者:
男 ccxpts (渔夫) ★☆☆☆☆ -
普通会员
2017/4/29 9:47:05
6楼: 谢谢各位大师的指点,我把NativeExcel3.1.0下载来,改了一下定义,可以在tokyo上使用,发让来给大家下载。
此帖子包含附件:ccxpts_20174299470.rar 大小:1.39M
----------------------------------------------
-
作者:
男 drag0n (drag0n) ★☆☆☆☆ -
普通会员
2017/4/29 16:25:28
7楼: NativeExcel对xlsx格式支持不太完善,我试过读取部分数据返回空。推荐用xlsreadwriteii,速度和功能都比NativeExcel好。
----------------------------------------------
-
作者:
男 yemny (yemny) ★☆☆☆☆ -
盒子活跃会员
2017/4/29 16:36:11
8楼: ExpressSpreadSheet 用也很简单
文档 样例 丰富
----------------------------------------------
-
作者:
男 kylix2008 (kylix2008) ★☆☆☆☆ -
普通会员
2017/5/1 21:36:32
9楼: NativeExcel还不错,小巧精干,官方为啥不更新了?
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行80.07813毫秒 RSS