1。用delphi如何实现把sql server2k中的表记录导入新建的excel文档中
2。用delphi如何实现把sql server2k中的表记录附加导入已存在的excel文档中
2。用delphi如何实现把sql server2k中的表记录附加导入已存在的excel文档中
解决方案 »
- fastreport哪个版本对中文支持比较好的?
- 关于delphi7中窗体继承的问题
- 请问如何屏蔽DBGrid单元格中的复制(Ctrl-C)和粘贴(Ctrl-V)?
- 80分,急 ,在线等,我想在其他事件中调用 stringgrid的 OnDrawcell 事件
- Delphi自带ADO控件+Access的问题(溢出)
- 讨论一个很简单但大家都可能很关心的问题?Delphi的下一个版本会是什么样的(从.net和java两方面讨论)?
- 如何在从一个表中转出数据然后转入异地的数据库中
- 有谁用过1stClass控件组的tfcOutLookBar,有问题请教
- 是用delphi搞开发的就进来看!
- 请问到什么地方去找关于delphi在sock编程方面的资料!!
- 菜鸟问题!如何用DBGrid把ADODataSet的记录集显示出来?
- 怎样用一个函数或过程实现焦点的下移?
2打开已导入数据的EXCEL文件,根据记录行数确定增加数据的起始行数,然后循环导入。
var
ss : TStrings;
i, j : integer;
s, sFields, sTitle : string;
begin
if sdSave.Execute then
begin
sFields := ';';
sTitle := '';
For i := 0 to Self.ComponentCount - 1 do
if (Self.Components[i] is TDBGrid) then
begin
if (Self.Components[i] as TDBGrid).DataSource = DsTemp then
begin
For j := 0 to (Self.Components[i] as TDBGrid).Columns.Count - 1 do
begin
sTitle := sTitle + (Self.Components[i] as TDBGrid).Columns[j].Title.Caption + #9;
sFields := sFields + (Self.Components[i] as TDBGrid).Columns[j].FieldName + ';';
end;
end;
end;
j := DstTemp.FieldCount - 1;
DstTemp.First;
ss := TStringList.Create;
ss.Add(sTitle);
while not DstTemp.Eof do
begin
s := '';
if sFields <> ';' then
begin
for i := 0 to j do
if (Pos(';'+DstTemp.Fields[i].FieldName+';', sFields) > 0)
or (DstTemp.Fields[i].DataType = ftMemo) then
s := s + DstTemp.Fields[i].asstring + #9;
end
else
begin
for i := 0 to j do
s := s + DstTemp.Fields[i].asstring + #9;
end;
ss.Add(s);
DstTemp.Next;
end;
ss.SaveToFile(sdSave.FileName);
ss.free;
end;
end;
sdsave.filename设为EXCEL文件。
var
MyExcel: Variant;
WorkBook: OleVariant;
WorkSheet: OleVariant;
i,j:integer;
xlsfilename :string;
Savedialog1 :TSaveDialog;
fieldCount1 :Integer;
begin
FieldCount1 :=0;
for j:=0 to TmpDBGrid.Columns.Count-1 do
if TmpDBGrid.Columns[j].Visible=true then
Inc(FieldCount1);
with TmpDBGrid.DataSource.DataSet do
if (Active) and (recordCount>0) then
begin
if Application.MessageBox(Pchar('共〖'+IntToStr(RecordCount)+' 行记录,'+IntToStr(FieldCount1)+' 列〗,确认导出到Excel?'),App_caption,MB_ICONQUESTION+MB_YESNO)=mrno then
Abort;
end
else
Abort;
SaveDialog1 :=TSaveDialog.create(Application);
SaveDialog1.Filter := 'Excel文件(*.xls)|*.XLS';
if savedialog1.Execute then
if savedialog1.FileName <>'' then
begin
xlsfilename :=savedialog1.FileName;
try
MyExcel:=CreateOleObject('Excel.Application');
MyExcel.Application.WorkBooks.Add;
MyExcel.Caption:='将数据导入到EXCEL表中';
MyExcel.Application.Visible:=false;
WorkBook:=MyExcel.Application.workbooks[1];
worksheet:=workbook.worksheets.item[1];
except
Application.MessageBox('EXCEL不存在!',App_caption,MB_ICONERROR+MB_OK);
Savedialog1.Free;
workBook.Saved := True;
WorkBook.close;
MyExcel.Quit;//释放VARIANT变量
MyExcel:=Unassigned;
end;
i:=1;
Frm_system_progress :=TFrm_system_progress.create(Application);
Try
with TmpDBGrid.DataSource.DataSet do
begin
Open;
DisableControls;
with Frm_system_progress.ProgressBar_temp do
begin
min :=0;
max :=TmpDBGrid.Columns.Count*recordcount;
Position :=0;
end;
Frm_system_progress.label_progress.caption :='正在导出到Excel...';
Frm_system_progress.Show;
Frm_system_progress.update;
for j:=0 to TmpDBGrid.Columns.Count-1 do
begin
if TmpDBGrid.Columns[j].Visible=true then
worksheet.cells[1,j+1]:=TmpDBGrid.Columns[j].Title.Caption;
end;
First;
while not Eof do
begin
inc(i);
for j:=0 to TmpDBGrid.Columns.Count-1 do
begin
if TmpDBGrid.Columns[j].Visible=true then
begin
worksheet.cells[i,j+1].NumberFormatLocal :='@';
worksheet.cells[i,j+1]:=TmpDBGrid.Columns[j].Field.AsString ;
Frm_system_progress.ProgressBar_temp.StepIt;
end;
end;
next;
end;
EnableControls;
end;
WorkBook.saveas(XlsFileName);
Frm_system_progress.ProgressBar_temp.position :=TmpDBGrid.Columns.Count*TmpDBGrid.DataSource.DataSet.RecordCount;
Application.MessageBox('导出到Excel成功!',App_caption,MB_ICONINFORMATION+MB_OK);
Frm_system_progress.Free;
MyExcel.Quit;
MyExcel := Unassigned;
Savedialog1.Free;
except
Application.MessageBox('导出到Excel失败!',App_caption,MB_ICONWARNING+MB_OK);
workBook.Saved := True;
WorkBook.close;
MyExcel.Quit;//释放VARIANT变量
MyExcel:=Unassigned;
Frm_system_progress.Free;
Savedialog1.Free;
end;
end;end;