如何打开一个已存在的Excel文件,并向这个文件中的一些表格中写入数据
解决方案 »
- Unsported 16bit resource in file 何故??? 告之!!!
- 欢迎加入ModeMaker的QQ群,群号:11227732
- scanline的问题
- 使用dbExpress控件(CloneCursor+SQL语句)搜寻数据时如何解决产生数据重复问题
- 怎么将用RegisterHotkey定义的热键关连到特定的事件上?
- 怎么样做才能算是一个合格的技术主管??
- <<程序员>>杂志第二期P103的质疑!
- delphi 中如何 让某个 Components 不显示
- vb代码转delphi,请大神们献策!
- mts和midas到底有什么区别?优点缺点是什么?
- 问个愚蠢的问题,delphi的未来会是怎样的?
- 请问怎样改变当前目录到指定的目录?谢谢~
var
pc_i:integer;
xlapp,sheet: variant;
WBK: OleVariant;
begin
xlapp := createoleobject('excel.application');
xlapp.visible := True; //Excel是否可见
if Trim(Edit1.Text)='' then
begin
Application.MessageBox('文件名不能为空','警告',MB_OK);
Exit;
end;
WBK := xlapp.workbooks.Open(Edit1.Text);
sheet := xlapp.workbooks[1].worksheets['sheet1'];
sheet.Cells.SpecialCells(XlCellTypeLastCell,EmptyParam).Activate; //showmessage(IntToStr(xlapp.ActiveCell.Row));
//showmessage(IntToStr(xlapp.ActiveCell.Column));
//excelworksheet2.UsedRange[1].Rows.Count));
//excelworksheet2.UsedRange[1].Columns.Count));
pc_i:=1;
Edit2.Text := sheet.cells[pc_i,1]; //写入的话用 sheet.cells[pc_i,1] := Edit2.Tex;
WBK.Close(SaveChanges := True);
xlapp.Quit;
end;
var
i,row,column:integer;
begin
Try
ExcelApplication1.Connect;
Except
MessageDlg('Excel may not be installed',
mtError, [mbOk], 0);
Abort;
End;
ExcelApplication1.Visible[0]:=True;
ExcelApplication1.Caption:='Excel Application';
ExcelApplication1.Workbooks.Add(Null,0);
ExcelWorkbook1.ConnectTo
(ExcelApplication1.Workbooks[1]);
ExcelWorksheet1.ConnectTo
(ExcelWorkbook1.Worksheets[1] as _Worksheet);
Table1.Open;
row:=1;
While Not(Table1.Eof) do
begin
column:=1;
for i:=1 to Table1.FieldCount do
begin
ExcelWorksheet1.Cells.Item[row,column]:
=Table1.fields[i-1].AsString;
column:=column+1;
end;
Table1.Next;
row:=row+1;
end;
end;
var xlsFilename :string;
eclApp,WorkBook :variant ;
a_filedNo,i,j :integer;
begin
a_filedNo :=Form3.DBGrid4.FieldCount ;
xlsFileName :='关于学生成绩基本信息.xls'; try
eclApp :=CreateOleObject('Excel.Application');
WorkBook :=CreateOleObject('Excel.Sheet');
except
showmessage('您的系统没有安装MS EXCEL');
exit;
end; try
WorkBook :=eclApp.workBooks.add ;
for i :=1 to a_FiledNo do //转化字段名;
begin
//eclApp.cells(1,i) :=Form3.DBGrid4.Columns[i-1].Title.caption ;
eclApp.cells(1,i) :=Form3.DBGrid4.Fields[i-1].FieldName ;
end; Form3.DBGrid4.DataSource.DataSet.First ;
for i :=1 to Form3.a_recno do //Form3.a_recno begin
for j :=1 to a_filedNo do //转化一个记录
begin
eclApp.cells(i+1,j) :=Form3.DbGrid4.Fields[j-1].Value ;
end;
Form3.DBGrid4.DataSource.DataSet.Next ;
end;
try
WorkBook.saveas(ExtractFilePath(Application.ExeName )+xlsFileName);
WorkBook.close;
showmessage('保存EXECL文件成功,路径为:'+ExtractFilePath(Application.ExeName )+xlsFileName);
except
showmessage('保存文件出错');
end;
except
showmessage('不能正确操作EXECL文件,可能该文件已经被其他程序占用或系统错误');
WorkBook.close;
eclApp.quit;
eclApp :=Unassigned;
end;
end;