一个从Excel读数据并写入文本文件的文题?(50分)

  • 主题发起人 主题发起人 caoliu
  • 开始时间 开始时间
C

caoliu

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm2.BitBtn1Click(Sender: TObject);
var
MsExcel:Variant;
i:integer;
outtxt:TextFile;
str:string;
begin
if Edit1.Text<>'' then
begin
fileCreate(Edit1.Text);
assignfile(outtxt,Edit1.Text);
end
else
begin
filecreate('Outbound.txt');
assignfile(outtxt,'Outbound.txt');
end;
MsExcel:=CreateOleObject('Excel.Application');
For i:=0 to (ListView1.Items.Count -1) do
MsExcel.WorkBooks.open(ListView1.Items.Item.Caption);
MsExcel.Visible:=false;
MsExcel.WorkSheets[1].Activate;
with MsExcel.WorkSheets[1] do
begin
j:=2;
while not Eof do
begin
for i:=2 to 10 do
begin
Read(Cells.Item[j,i]);
str:=Cells.Item[j,i];
Write(outtxt,str+'');
end;
Writeln(outtxt);
end;
end;
end;
end.


大家帮我看这段代码:
编译到with MsExcel.WorkSheets[1] do报错,是不是不能这样写.
以下两行代码这样写对吗?
Read(Cells.Item[j,i]);
str:=Cells.Item[j,i];
 
>>Read(Cells.Item[j,i]);
应该是Read(VarToStr(Cells[j,i].value));

报错是因为一、你的写法不对,二是读娶的内容是variant型的所以要转化成字符型
 
编译到with MsExcel.WorkSheets[1] do报错,是不是不能这样写.
MsExcel对象不是Delphi的VCL对象,不能用于with ... do的形式?
那要怎么改?
 
把 with MsExcel.WorkSheets[1] do
begin
j:=2;
while not Eof do
begin
for i:=2 to 10 do
begin
Read(Cells.Item[j,i]);
str:=Cells.Item[j,i];
Write(outtxt,str+'');
end;
Writeln(outtxt);
end;
改成以下:
for j:=2 to MsExcel.WorkSheets[1].Cells.Columns.Count do
begin
for i:=2 to 10 do
begin
Read(VarToStr(Cells[j,i].value));
str:=VarToStr(Cells[j,i].value);
Write(outtxt,str+'');
end;
Writeln(outtxt);
end

但在Read(VarToStr(Cells[j,i].value));报错呀
帮帮我吧!
 
要这么麻烦吗,反正你是用OLE方式调用EXCEL,那就直接调用EXCEL另存为文本格式的文件
不就得了.
 
说百了就是从Excel的第2行开始读 第2列到第10列的数据,
并写入TXT.
怎么写呀?
 
Read(VarToStr(MsExcel.WorkSheets[1].Cells[j,i].value));
你就多写2个字好不好?![:)]
 
接受答案了.
 
后退
顶部