excel表修改数据(100分)

  • 主题发起人 主题发起人 GSBeach
  • 开始时间 开始时间
G

GSBeach

Unregistered / Unconfirmed
GUEST, unregistred user!
我用opendialog构件打开一个c:/test/a.xls文件,使文件名连同路径名显示在edit编辑框中,然后执行另一个按钮,作用是打开a.xls编辑它但出现错误提示:a.xls处于锁定状态,xx正在编辑;文件可能是只读的,或要访问的位置是只读的,或文件所在的服务器没有响应。
 
这是 office 文档的特殊保护机制,在文档目录下,存在一下~*.tmp文档,删除
他们,还有,当前的文档有宏 Visus 的时候也有如此反映。
应该不是 opendialog 的问题,因为我也有类似的程序,不过,没有问题
1
 
为什么?
 
excel表在DELPHI中的操作有很多。你查些源程序用吧。
我没有遇到过这类问题。贴一段给你吧。

直接用 OLE 读取 EXCEL 文档。
procedure TForm1.Button1Click(Sender: TObject);
var ExcelApp,MyWorkBook: OLEVariant;
i,j: Integer;
begin
try
ExcelApp:=CreateOleObject('Excel.Application');
MyWorkBook:=CreateOleobject('Excel.Sheet');
except
application.Messagebox('无法打开Xls文件,请确认已 经安装EXCEL.','',
mb_OK+mb_IconStop);
Exit;
end;
//ExcelApp.Visible := true;
MyworkBook:= ExcelApp.workBooks.Open(ExtractFileDir(Application.ExeName)
+ '/' + Edit1.Text + '.xls');
for i := 3 to 9 do begin
//Read a row into table
table1.Append;
table1.FieldByName('Name').AsString := MyWorkBook.WorkSheets[1].Cells[i,1].Value;
table1.FieldByName('Size').AsString := MyWorkBook.WorkSheets[1].Cells[i,2].Value;
table1.FieldByName('Weight').AsString := MyWorkBook.WorkSheets[1].Cells[i,3].Value;
table1.FieldByName('Area').AsString := MyWorkBook.WorkSheets[1].Cells[i,4].Value;
end;
//showmessage(MyWorkBook.WorkSheets[1].Columns[1].numberformat);
//showmessage(MyWorkBook.WorkSheets[1].Columns[2].numberformat);

ExcelApp:=Unassigned; //释放VARIANT变量
end;
 
to hsw:好象不是这个原因,与~df*.tmp无关的,大概我漏写了Close。
to wumeng:谢谢你的贴子。showmessage时犯了Automation对象的错误,不知为什么。
to everyone:Excel表向SQL库写数据时怎样格式化?
 
showmessage(table1.FieldByName('Name').AsString);
这样就可以了。
 
O,问题已解决
 
写到库里的时候没问题,但主要是读出的时候,如SQL库CW表Price字段定义为float类型,从Excel表写进去数据为123.45,再用Select * from CW后,数据显示为123.4499...,不知怎样解决,请各位大虾指点。
 
以上各位将得到不同比例的分数,但总分至少是100分,我想在最后一个问题解决后
再给大家分配,请各位继续给予帮助!Thanks a lot!
 
很高兴。呵呵
 
把BDE中enable bcd=true
 
to wumeng:EnableBCD也没用,我现在只是把float改为decimal类型,不知是否有类似round函数
的方法?
 
很久没有上网,这几天很忙,去了一趟青岛,谢谢大家的帮助。
To Crab:这两天下巴上长了很多胡子,不知 Crab 兄的情况?。。。开玩笑的。
To Crab,hsw,menxin,wumeng,向红林:
经常见到几位的大名,以后还请多多帮助!
 
大家都是高手,交个朋友吧 email: luhaoliang@371.net










 
后退
顶部