在只装有wps的情况下,delphi6.0怎么实现.xls文件的导入功能

jim80s 2013-04-28 09:52:42
各位大大求教,在只装有wps的情况下,delphi6.0怎么实现.xls文件的导入功能?谢谢了
...全文
297 点赞 收藏 17
写回复
17 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lyhoo163 2013-06-30
建议使用XLSReadWriteII4。
回复
ming626 2013-06-27
我也遇到这个问题了,请大家(xsl510079027,jim80s)帮帮忙解决,万分感谢!87329767@QQ.com
回复
清风皎月 2013-05-07
回复
xiaosailun 2013-05-07
引用 11 楼 jim80s 的回复:
xsl510079027,我可能积分不够下载您的资源,如果方便能帮忙发到qf388@163.com,万分感谢!!!
已发相关资料
回复
jim80s 2013-05-07
谢谢各位的帮忙,已解决!
回复
OO_is_just_P 2013-05-06
NativeExcel,完全是文件操作,和Office没关系。
回复
jim80s 2013-05-06
xsl510079027,我可能积分不够下载您的资源,如果方便能帮忙发到qf388@163.com,万分感谢!!!
回复
xiaosailun 2013-05-02
我的资源里面有delphi操作WPS,如果你是用ole对象操作的话,下载这个吧。至于引用单元你找找吧,office用Excel2000.pas,wps也是有对应的文件。但是没有也没有关系,Wpsxxx这种变量就是0,1,2,3...助记的
回复
jim80s 2013-05-02
但是WPS应该用哪个呢?一直找不到可以用的
回复
jim80s 2013-05-02
ExcelApp := TExcelApplication.Create(nil); ExcelWorkbook := TExcelWorkbook.Create(nil); ExcelWorksheet := TExcelWorksheet.Create(nil); ExcelApp.Connect; ExcelApp.Visible[0]:= False; ExcelWorkbook.ConnectTo(ExcelApp.Workbooks.Open(sFileName, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,0)); ExcelWorksheet.ConnectTo((ExcelWorkbook.Worksheets.Item[1]) As _Worksheet);
回复
jim80s 2013-05-02
还是不太理解,求xsl510079027能否展示一下相关API的资料?十分感谢
回复
parhelia512 2013-04-29
回复
easyboot 2013-04-29
unit UExcelOperator; interface uses Windows, DB, Classes, SysUtils, Dialogs; type TExcelCls = class(TOBject) private { Private declarations } public { Public declarations } procedure SaveDataToExcel(aDataSet: TDataSet); end; var arXlsBegin: array[0..5] of Word = ($809, 8, 0, $10, 0, 0); arXlsEnd: array[0..1] of Word = ($0A, 00); arXlsString: array[0..5] of Word = ($204, 0, 0, 0, 0, 0); arXlsNumber: array[0..4] of Word = ($203, 14, 0, 0, 0); arXlsInteger: array[0..4] of Word = ($27E, 10, 0, 0, 0); arXlsBlank: array[0..4] of Word = ($201, 6, 0, 0, $17); implementation procedure ExportExcelFile(FileName: string; bWriteTitle: Boolean; aDataSet: TDataSet); var i: integer; Col, row: word; ABookMark: TBookMark; aFileStream: TFileStream; procedure incColRow; //增加行列号 begin if Col = ADataSet.FieldCount - 1 then begin Inc(Row); Col := 0; end else Inc(Col); end; procedure WriteStringCell(AValue: string); //写字符串数据 var L: Word; begin L := Length(AValue); arXlsString[1] := 8 + L; arXlsString[2] := Row; arXlsString[3] := Col; arXlsString[5] := L; aFileStream.WriteBuffer(arXlsString, SizeOf(arXlsString)); aFileStream.WriteBuffer(Pointer(AValue)^, L); IncColRow; end; procedure WriteIntegerCell(AValue: integer); //写整数 var V: Integer; begin arXlsInteger[2] := Row; arXlsInteger[3] := Col; aFileStream.WriteBuffer(arXlsInteger, SizeOf(arXlsInteger)); V := (AValue shl 2) or 2; aFileStream.WriteBuffer(V, 4); IncColRow; end; procedure WriteFloatCell(AValue: double); //写浮点数 begin arXlsNumber[2] := Row; arXlsNumber[3] := Col; aFileStream.WriteBuffer(arXlsNumber, SizeOf(arXlsNumber)); aFileStream.WriteBuffer(AValue, 8); IncColRow; end; begin // i:=0; if FileExists(FileName) then DeleteFile(FileName); //文件存在,先删除 aFileStream := TFileStream.Create(FileName, fmCreate); try //写文件头   aFileStream.WriteBuffer(arXlsBegin, SizeOf(arXlsBegin)); //写列头   Col := 0; Row := 0; if bWriteTitle then begin for i := 0 to aDataSet.FieldCount - 1 do WriteStringCell(aDataSet.Fields[i].FieldName); end; //写数据集中的数据    aDataSet.DisableControls; ABookMark := aDataSet.GetBookmark; aDataSet.First; while not aDataSet.Eof do begin for i := 0 to aDataSet.FieldCount - 1 do case ADataSet.Fields[i].DataType of ftSmallint, ftInteger, ftWord, ftAutoInc, ftBytes: WriteIntegerCell(aDataSet.Fields[i].AsInteger); ftFloat, ftCurrency, ftBCD: WriteFloatCell(aDataSet.Fields[i].AsFloat) else WriteStringCell(aDataSet.Fields[i].AsString); end; aDataSet.Next; end; //写文件尾   AFileStream.WriteBuffer(arXlsEnd, SizeOf(arXlsEnd)); if ADataSet.BookmarkValid(ABookMark) then aDataSet.GotoBookmark(ABookMark); finally AFileStream.Free; ADataSet.EnableControls; end; end; procedure TExcelCls.SaveDataToExcel(aDataSet: TDataSet); var StrSaveFile: string; SaveDialog: TSaveDialog; begin try SaveDialog := TSaveDialog.Create(nil); SaveDialog.Filter := 'Microsoft Excel 文件|*.xls'; SaveDialog.FileName := '查詢結果.xls'; SaveDialog.Options := [ofOverwritePrompt, ofHideReadOnly, ofEnableSizing]; if SaveDialog.Execute then begin StrSaveFile := SaveDialog.FileName; ExportExcelFile(StrSaveFile, true, aDataSet); end; SaveDialog.Free; finally end; end; end.
回复
xiaosailun 2013-04-28
其实WPS是能兼容word的,可以通过oleVariant操作.xsl 与word操作差不多,网上找找相关例子和api
回复
Oraclers 2013-04-28
可以用ADO连接打开。
回复
xiaosailun 2013-04-28
引用 3 楼 jim80s 的回复:
之前在装有office的机器上是可以引用Excel2000.pas的
安装WPS同样有对应的pas单元的,而且Excel2000.pas定义的只是一些变量的,对照word开发手册,那例子都是VBA代码 WPS其实与office的API是差不多,只是变量名不同。office中以wd开头,wps就以wps开头,但其指向的值,其实还是一样的
回复
jim80s 2013-04-28
之前在装有office的机器上是可以引用Excel2000.pas的
回复
相关推荐
发帖
Delphi
创建于2007-08-02

4925

社区成员

Delphi 开发及应用
申请成为版主
帖子事件
创建了帖子
2013-04-28 09:52
社区公告
暂无公告