delphi导出数据至Excel的七种方法及比较以及一些EXCEL单元格的操作
如何把MSHFlexGrid里的数据导出至Excel
如何把MSHFlexGrid里的数据导出至Excel?用Adodc1做了查询语句,结果显示在一个MSHFlexGrid里面。
现在要求做一个按钮(Command1),点击它就把MSHFlexGrid里显示的数据导出至Excel表中。
就是一点这个按钮,就会自动打开Excel,然后数据就已经进去了,方便编辑和打印。
要求:代码详细,直接复制到Command1下就能用。
这块我不懂,所以不要搞什么子程序调用之类的,要有子程序也给直接调用好。
直接复制代码成功后,再追加100分。
把这个弄完工程就结了,再不用受罪了,哈哈!以下是精简后的代码,不清楚你工作中的一些细节,所以如有问题与我讨论Private Sub Command1_Click()MSFlexGrid1.Redraw = False '关闭表格重画,加快运行速度Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象Set xlBook = xlApp.Workbooks.Open(App.Path & "\对账模板.xls") '打开已经存在的EXCEL 工件簿文件xlApp.Visible = True '设置EXCEL对象可见(或不可见)Set xlsheet = xlBook.Worksheets("Sheet1") '设置活动工作表For R = 0 To MSFlexGrid1.Rows - 1 '行循环For C = 0 To MSFlexGrid1.Cols - 1 '列循环MSFlexGrid1.Row = RMSFlexGrid1.Col = CxlBook.Worksheets("Sheet1").Cells(R + 1, C + 1) = MSFlexGrid1.Text '保存到EXCEL Next CNext RMSFlexGrid1.Redraw = True'xlsheet.PrintOut '打印工作表xlApp.DisplayAlerts = False '不进行安全提示'xlBook.Close (False) '关闭工作簿Set xlsheet = NothingSet xlBook = NothingxlApp.QuitSet xlApp = NothingEnd Sub下面的代码就也能导出到EXCELDim xlApp As Excel.ApplicationDim xlBook As Excel.WorkbookDim xlSheet As Excel.WorksheetDim i As Long, J As LongOn Error GoTo ErrorHandleSet xlApp = CreateObject( "Excel.Application ")Set xlBook = xlApp.Workbooks.AddSet xlSheet = xlBook.Worksheets(1)For i = 0 To MHFGrid.Rows - 1For J = 0 To MHFGrid.Cols - 1xlSheet.Cells(i + 1, J + 1).Value = MHFGrid.TextMatrix(i, J)Next JNext ixlSheet.Application.Visible = TrueSet xlSheet = NothingSet xlBook = NothingSet xlApp = NothingExit SubErrorHandle:MsgBox "错误:" & Err.Number & vbCrLf & Err.Description, vbOKOnly, "运行错误"如何将表中的数据导出到电子表格中作者:施进兵有很多方法都可将数据库中某个表的数据导出到电子表格中,例如通过创建Access.Application,可以利用Access本身的导出功能实现将表中的数据导出到电子表格中。
delphidbgrid导出Excel表
delphi dbgrid 导出Excel表///////// 利用剪贴板,速度很快!适合装有Excel的机器///////////////////// USES Clipbrd,ComObj;procedure TForm1.Button1Click(Sender: TObject);varstr:string;i:Integer;excelapp,sheet:Variant;begin// lbl2.Caption:=DateTimeToStr(Now);str:='';dbgrd1.DataSource.DataSet.DisableControls;for i:=0 to dbgrd1.DataSource.DataSet.FieldCount-1 dostr:=str+dbgrd1.DataSource.DataSet.fields[i].DisplayLabel+char(9);str:=str+#13;dbgrd1.DataSource.DataSet.First;while not(dbgrd1.DataSource.DataSet.eof) do beginfor i:=0 to dbgrd1.DataSource.DataSet.FieldCount-1 dostr:=str+dbgrd1.DataSource.DataSet.Fields[i].AsString+char(9);str:=str+#13;dbgrd1.DataSource.DataSet.next;lbl1.Caption:=IntToStr(dbgrd1.DataSource.DataSet.RecNo);Application.ProcessMessages;end;//end whiledbgrd1.DataSource.DataSet.EnableControls;clipboard.Clear;Clipboard.Open;Clipboard.AsText:=str;Clipboard.Close;excelapp:=createoleobject('excel.application');excelapp.workbooks.add(1); // excelapp.workbooks.add(-4167);sheet:=excelapp.workbooks[1].worksheets[1];:='sheet1';sheet.paste;Clipboard.Clear;// :='宋体';// sheet.columns.font.size:=9;// sheet.Columns.AutoFit;excelapp.visible:=true;// lbl3.Caption:=DateTimeToStr(Now);end;/////////////////////////////////////////////////////////利用TStringList,速度很快!适合没有装Excel的机器////////////////////////procedure TForm1.Button1Click(Sender: TObject);vars:TStringList;str:string;i:Integer;begin// lbl1.Caption:=DateTimeToStr(Now);str:='';dbgrd1.DataSource.DataSet.DisableControls;for i:=0 to dbgrd1.DataSource.DataSet.FieldCount-1 dostr:=str+dbgrd1.DataSource.DataSet.fields[i].DisplayLabel+char(9);str:=str+#13;dbgrd1.DataSource.DataSet.First;while not(dbgrd1.DataSource.DataSet.eof) do beginfor i:=0 to dbgrd1.DataSource.DataSet.FieldCount-1 dostr:=str+dbgrd1.DataSource.DataSet.Fields[i].AsString+char(9);str:=str+#13;dbgrd1.DataSource.DataSet.next;// lbl3.Caption:=IntToStr(dbgrd1.DataSource.DataSet.RecNo);// Application.ProcessMessages;end;//end whiledbgrd1.DataSource.DataSet.EnableControls;s:=TStringList.Create;s.Add(str);s.SaveToFile('c:\temp.xls');//保存到c:\temp.xlss.Free;// lbl2.Caption:=DateTimeToStr(Now);end;////////////////////////////////////////////////***********************************************************(Delphi)Excel的快速导入***********************************************************(Delphi)Excel的快速导入//怎样可以提高EXCEL的导出速度?uses ADODB,excel97,adoint;function TForm1.ExportToExcel: Boolean;varxlApp,xlBook,xlSheet,xlQuery: Variant;adoConnection,adoRecordset: Variant;beginadoConnection := CreateOleObject('ADODB.Connection');adoRecordset := CreateOleObject('ADODB.Recordset');adoConnection.Open('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Tree.mdb;Persist Security Info=False');adoRecordset.CursorLocation := adUseClient;adoRecordset.Open('SELECT * FROM tree',adoConnection,1,3);tryxlApp := CreateOleObject('Excel.Application');xlBook := xlApp.Workbooks.Add;xlSheet := xlBook.Worksheets['sheet1'];//设置这一列为文本列,让"00123" 正确显示,而不是自动转换为"123"xlSheet.Columns['C:C'].NumberFormatLocal := '@';xlApp.Visible := True;//把查询结果导入EXCEL数据xlQuery := xlSheet.QueryTables.Add(adoRecordset,xlSheet.Range['A1']); //关键是这一句xlQuery.FieldNames := True;xlQuery.RowNumbers := False;xlQuery.FillAdjacentFormulas := False;xlQuery.PreserveFormatting := True;xlQuery.RefreshOnFileOpen := False;xlQuery.BackgroundQuery := True;//xlQuery.RefreshStyle := xlInsertDeleteCells;xlQuery.SavePassword := True;xlQuery.SaveData := True;xlQuery.AdjustColumnWidth := True;xlQuery.RefreshPeriod := 0;xlQuery.PreserveColumnInfo := True;xlQuery.FieldNames := True;xlQuery.Refresh;xlBook.SaveAs('d:\fromD.xls',xlNormal,'','',False,False);finallyif not VarIsEmpty(XLApp) then beginXLApp.displayAlerts:=false;XLApp.ScreenUpdating:=true;XLApp.quit;end;end;end;///////////////////////////////////////////////////procedure saveToExcel();varEclapp,workbook:variant;i,n:integer;beginif not adoquery1.Active then exit;if adoquery1.RecordCount<=0 then exit;if application.MessageBox('确认导出excel表吗?','提示',mb_okcancel+mb_iconinformation)=idcancel then exit;Eclapp := createoleobject('Excel.Application');Eclapp.workbooks.add;for i:=0 to dbgrid2.FieldCount-1 dobeginEclapp.cells[1,i+1]:=dbgrid2.Columns[i].Title.Caption;end;Eclapp.cells[1,5]:='签字';adoquery1.First;n:=2;while not adoquery1.Eof doeclapp.cells[n,1] := adoquery1.Fields[0].AsString;eclapp.cells[n,2] := adoquery1.Fields[1].AsString;eclapp.cells[n,3] := adoquery1.Fields[2].AsString;eclapp.cells[n,4] := adoquery1.Fields[4].AsString;eclapp.cells[n,6] :=' ';inc(n);adoquery1.Next;end;eclapp.cells[n,1] := '满足条件记录的总数为:'+inttostr(adoquery1.RecordCount)+'条';application.MessageBox('数据导出完成!','提示',mb_ok+mb_iconinformation);eclapp.visible := true;end;方法二procedure CopyDbDataToExcel(Args: array of const);variCount, jCount: Integer;XLApp: Variant;Sheet,range: Variant;I: Integer;beginScreen.Cursor := crHourGlass;if not VarIsEmpty(XLApp) thenbeginXLApp.DisplayAlerts := False;XLApp.Quit;VarClear(XLApp);end;tryXLApp:=CreateOleObject(Excel.Application);exceptScreen.Cursor := crDefault;Exit;end;XLApp.WorkBooks.Add;XLApp.SheetsInNewWorkbook := High(Args) + 1;for I := Low(Args) to High(Args) doXLApp.WorkBooks[1].WorkSheets[I+1].Name := TDBGrid(Args[I].VObject).Name;Sheet := XLApp.Workbooks[1].WorkSheets[TDBGrid(Args[I].VObject).Name];if not TDBGrid(Args[I].VObject).DataSource.DataSet.Active thenbeginScreen.Cursor := crDefault;Exit;end;TDBGrid(Args[I].VObject).DataSource.DataSet.first;for iCount := 0 to TDBGrid(Args[I].VObject).Columns.Count - 1 dorange:=sheet.range[sheet.cells[1,1],sheet.cells[1,iCount + 1]];range.select;range.merge;sheet.cells[1,1]:=[+fqueryhuman.dbedit2.text+]+个人报销记录(普通报销、特殊报销)查询;jCount :=2;for iCount := 0 to TDBGrid(Args[I].VObject).Columns.Count - 1 doSheet.Cells[2, iCount + 1]:=TDBGrid(Args[I].VObject).Columns.Items[iCount].Title.Caption; while not TDBGrid(Args[I].VObject).DataSource.DataSet.Eof dobeginfor iCount := 0 to TDBGrid(Args[I].VObject).Columns.Count - 1 doSheet.Cells[jCount + 1, iCount + 1] :=TDBGrid(Args[I].VObject).Columns.Items[iCount].Field.AsString;Inc(jCount);TDBGrid(Args[I].VObject).DataSource.DataSet.Next;end;XlApp.Visible := True;end;Screen.Cursor := crDefault;end;方法三delphi导入/导出excel2008年03月02日星期日16:39从Excel文件中,导入数据到SQL数据库中,很简单,直接用下面的语句:/*===================================================================*/--如果接受数据导入的表已经存在insert into 表select * fromOPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)--如果导入数据并生成表select * into 表fromOPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)/*===================================================================*/--如果从SQL数据库中,导出数据到Excel,如果Excel文件已经存在,而且已经按照要接收的数据创建好表头,就可以简单的用:insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)select * from 表--如果Excel文件不存在,也可以用BCP来导成类Excel的文件,注意大小写:--导出表的情况EXEC master..xp_cmdshell 'bcp 数据库名.dbo.表名out "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"'--导出查询的情况EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"'/*--说明:c:\test.xls 为导入/导出的Excel文件名.sheet1$ 为Excel文件的工作表名,一般要加上$才能正常使用.--*/--下面是导出真正Excel文件的方法:if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_exporttb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[p_exporttb]GO/*--数据导出EXCEL导出表中的数据到Excel,包含字段名,文件为真正的Excel文件,如果文件不存在,将自动创建文件,如果表不存在,将自动创建表基于通用性考虑,仅支持导出标准数据类型--邹建2003.10(引用请保留此信息)--*//*--调用示例p_exporttb @tbname='地区资料',@path='c:\',@fname='aa.xls'--*/create proc p_exporttb@tbname sysname, --要导出的表名@path nvarchar(1000), --文件存放目录@fname nvarchar(250)='' --文件名,默认为表名asdeclare @err int,@src nvarchar(255),@desc nvarchar(255),@out intdeclare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000)--参数检测if isnull(@fname,'')='' set @fname=@tbname+'.xls'--检查文件是否已经存在if right(@path,1)<>'\' set @path=@path+'\'create table #tb(a bit,b bit,c bit)set @sql=@path+@fnameinsert into #tb exec master..xp_fileexist @sql--数据库创建语句set @sql=@path+@fnameif exists(select 1 from #tb where a=1)set @constr='DRIVER={Microsoft Excel Driver (*.xls)};DSN='''';READONLY=FALSE' +';CREATE_DB="'+@sql+'";DBQ='+@sqlelseset @constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 8.0;HDR=YES' +';DATABASE='+@sql+'"'--连接数据库exec @err=sp_oacreate 'adodb.connection',@obj outif @err<>0 goto lberrexec @err=sp_oamethod @obj,'open',null,@constrif @err<>0 goto lberr/*--如果覆盖已经存在的表,就加上下面的语句--创建之前先删除表/如果存在的话select @sql='drop table ['+@tbname+']'exec @err=sp_oamethod @obj,'execute',@out out,@sql--*/--创建表的SQLselect @sql='',@fdlist=''select @fdlist=@fdlist+',['++']',@sql=@sql+',['++'] '+casewhen like '%char'then case when a.length>255 then 'memo'else 'text('+cast(a.length as varchar)+')' endwhen like '%int' or ='bit' then 'int'when like '%datetime' then 'datetime'when like '%money' then 'money'when like '%text' then 'memo'else endFROM syscolumns a left join systypes b on a.xtype=b.xusertypewhere not in('image','uniqueidentifier','sql_variant','varbinary','binary','timestamp') and object_id(@tbname)=idselect @sql='create table ['+@tbname+']('+substring(@sql,2,8000)+')',@fdlist=substring(@fdlist,2,8000)exec @err=sp_oamethod @obj,'execute',@out out,@sqlif @err<>0 goto lberrexec @err=sp_oadestroy @obj--导入数据set @sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=YES;IMEX=1 ;DATABASE='+@path+@fname+''',['+@tbname+'$])'exec('insert into '+@sql+'('+@fdlist+') select '+@fdlist+' from '+@tbname)returnlberr:exec sp_oageterrorinfo 0,@src out,@desc outlbexit:select cast(@err as varbinary(4)) as 错误号,@src as 错误源,@desc as 错误描述select @sql,@constr,@fdlistgoif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_exporttb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[p_exporttb]GO/*--数据导出EXCEL导出查询中的数据到Excel,包含字段名,文件为真正的Excel文件如果文件不存在,将自动创建文件如果表不存在,将自动创建表基于通用性考虑,仅支持导出标准数据类型--邹建2003.10(引用请保留此信息)--*//*--调用示例p_exporttb @sqlstr='select * from 地区资料',@path='c:\',@fname='aa.xls',@sheetname='地区资料'--*/create proc p_exporttb@sqlstr varchar(8000), --查询语句,如果查询语句中使用了order by ,请加上top 100 percent@path nvarchar(1000), --文件存放目录@fname nvarchar(250), --文件名@sheetname varchar(250)='' --要创建的工作表名,默认为文件名asdeclare @err int,@src nvarchar(255),@desc nvarchar(255),@out intdeclare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000)--参数检测if isnull(@fname,'')='' set @fname='temp.xls'if isnull(@sheetname,'')='' set @sheetname=replace(@fname,'.','#')--检查文件是否已经存在if right(@path,1)<>'\' set @path=@path+'\'create table #tb(a bit,b bit,c bit)set @sql=@path+@fnameinsert into #tb exec master..xp_fileexist @sql--数据库创建语句set @sql=@path+@fnameif exists(select 1 from #tb where a=1)set @constr='DRIVER={Microsoft Excel Driver (*.xls)};DSN='''';READONLY=FALSE'+';CREATE_DB="'+@sql+'";DBQ='+@sqlelseset @constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 8.0;HDR=YES' +';DATABASE='+@sql+'"'--连接数据库exec @err=sp_oacreate 'adodb.connection',@obj outif @err<>0 goto lberrexec @err=sp_oamethod @obj,'open',null,@constrif @err<>0 goto lberr--创建表的SQLdeclare @tbname sysnameset @tbname='##tmp_'+convert(varchar(38),newid())set @sql='select * into ['+@tbname+'] from('+@sqlstr+') a'exec(@sql)select @sql='',@fdlist=''select @fdlist=@fdlist+',['++']',@sql=@sql+',['++'] '+casewhen like '%char'then case when a.length>255 then 'memo'else 'text('+cast(a.length as varchar)+')' endwhen like '%int' or ='bit' then 'int'when like '%datetime' then 'datetime'when like '%money' then 'money'when like '%text' then 'memo'else endFROM tempdb..syscolumns a left join tempdb..systypes b on a.xtype=b.xusertypewhere not in('image','uniqueidentifier','sql_variant','varbinary','binary','timestamp') and a.id=(select id from tempdb..sysobjects where name=@tbname)if @@rowcount=0 returnselect @sql='create table ['+@sheetname+']('+substring(@sql,2,8000)+')',@fdlist=substring(@fdlist,2,8000)exec @err=sp_oamethod @obj,'execute',@out out,@sqlif @err<>0 goto lberrexec @err=sp_oadestroy @obj--导入数据set @sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=YES ;DATABASE='+@path+@fname+''',['+@sheetname+'$])'exec('insert into '+@sql+'('+@fdlist+') select '+@fdlist+' from ['+@tbname+']')set @sql='drop table ['+@tbname+']'exec(@sql)returnlberr:exec sp_oageterrorinfo 0,@src out,@desc outlbexit:select cast(@err as varbinary(4)) as 错误号,@src as 错误源,@desc as 错误描述select @sql,@constr,@fdlistgo。
如何把MSHFlexGrid里的数据导出至Excel
如何把MSHFlexGrid里的数据导出至Excel如何把MSHFlexGrid里的数据导出至Excel?用Adodc1做了查询语句,结果显示在一个MSHFlexGrid里面。
现在要求做一个按钮(Command1),点击它就把MSHFlexGrid里显示的数据导出至Excel表中。
就是一点这个按钮,就会自动打开Excel,然后数据就已经进去了,方便编辑和打印。
要求:代码详细,直接复制到Command1下就能用。
这块我不懂,所以不要搞什么子程序调用之类的,要有子程序也给直接调用好。
直接复制代码成功后,再追加100分。
把这个弄完工程就结了,再不用受罪了,哈哈!以下是精简后的代码,不清楚你工作中的一些细节,所以如有问题与我讨论Private Sub Command1_Click()= False '关闭表格重画,加快运行速度Set xlApp = CreateObject("") '创建EXCEL对象Set xlBook = & "\对账模板.xls") '打开已经存在的EXCEL工件簿文件= True '设置EXCEL对象可见(或不可见)Set xlsheet = ("Sheet1") '设置活动工作表For R = 0 To - 1 '行循环For C = 0 To - 1 '列循环= R= C("Sheet1").Cells(R + 1, C + 1) = '保存到EXCELNext CNext R= True' '打印工作表= False '不进行安全提示' (False) '关闭工作簿Set xlsheet = NothingSet xlBook = NothingSet xlApp = NothingEnd Sub下面的代码就也能导出到EXCELDim xlApp AsDim xlBook AsDim xlSheet AsDim i As Long, J As LongOn Error GoTo ErrorHandleSet xlApp = CreateObject( " ")Set xlBook =Set xlSheet = (1)For i = 0 To - 1For J = 0 To - 1(i + 1, J + 1).Value = (i, J)Next JNext i= TrueSet xlSheet = NothingSet xlBook = NothingSet xlApp = NothingExit SubErrorHandle:MsgBox "错误:" & & vbCrLf & , vbOKOnly, "运行错误"如何将表中的数据导出到电子表格中作者:施进兵有很多方法都可将数据库中某个表的数据导出到电子表格中,例如通过创建,可以利用Access 本身的导出功能实现将表中的数据导出到电子表格中。
怎么在delphi中读取Excel数据(各种详细操作)
怎么在delphi中读取Excel数据(各种详细操作)转( 一) 使用动态创建的方法首先创建Excel 对象,使用ComObj :VarExcelApp : Variant ;ExcelApp := CreateOleObject ( '' Excel.Application '' ) ;1 ) 显示当前窗口:ExcelApp.Visible := True ;2 ) 更改Excel 标题栏:ExcelApp.Caption := '' 应用程序调用Microsoft Excel '' ;3 ) 添加新工作簿:ExcelApp.WorkBooks.Add ;4 ) 打开已存在的工作簿:ExcelApp.WorkBooks.Open ( '' C : \Excel\Demo.xls '' ) ;5 ) 设置第2个工作表为活动工作表:ExcelApp.WorkSheets [ 2 ] .Activate ;或ExcelApp.WorksSheets [ '' Sheet2 '' ] .Activate ;6 ) 给单元格赋值:ExcelApp.Cells [ 1 , 4 ] .Value := '' 第一行第四列'' ;7 ) 设置指定列的宽度(单位:字符个数),以第一列为例:ExcelApp.ActiveSheet.Columns [ 1 ] .ColumnsWidth := 5 ;8 ) 设置指定行的高度(单位:磅)(1磅=0.035 厘米),以第二行为例:ExcelApp.ActiveSheet.Rows [ 2 ] .RowHeight := 1 / 0.035 ; // 1厘米9 ) 在第8行之前插入分页符:ExcelApp.WorkSheets [ 1 ] .Rows [ 8 ] .PageBreak := 1 ;10 ) 在第8列之前删除分页符:ExcelApp.ActiveSheet.Columns [ 4 ] .PageBreak := 0 ;11 ) 指定边框线宽度:ExcelApp.ActiveSheet.Range [ '' B3 : D4 '' ] .Borders [ 2 ] .Weight := 3 ;1 - 左2 - 右3 - 顶4 - 底5 - 斜( \ )6 - 斜( / )12 ) 清除第一行第四列单元格公式:ExcelApp.ActiveSheet.Cells [ 1 , 4 ] .ClearContents ;13 ) 设置第一行字体属性:ExcelApp.ActiveSheet.Rows [ 1 ] := '' 隶书'' ;ExcelApp.ActiveSheet.Rows [ 1 ] .Font.Color := clBlue ;ExcelApp.ActiveSheet.Rows [ 1 ] .Font.Bold := True ;ExcelApp.ActiveSheet.Rows [ 1 ] .Font.UnderLine := True ;14 ) 进行页面设置:a.页眉:ExcelApp.ActiveSheet.PageSetup.CenterHeader := '' 报表演示'' ;b.页脚:ExcelApp.ActiveSheet.PageSetup.CenterFooter := '' 第&P页'' ;c.页眉到顶端边距2cm:ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 2 / 0.035 ;d.页脚到底端边距3cm:ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 3 / 0.035 ;e.顶边距2cm:ExcelApp.ActiveSheet.PageSetup.TopMargin := 2 / 0.035 ;f.底边距2cm:ExcelApp.ActiveSheet.PageSetup.BottomMargin := 2 / 0.035 ;g.左边距2cm:ExcelApp.ActiveSheet.PageSetup.LeftMargin := 2 / 0.035 ;h.右边距2cm:ExcelApp.ActiveSheet.PageSetup.RightMargin := 2 / 0.035 ;i.页面水平居中:ExcelApp.ActiveSheet.PageSetup.CenterHorizontally := 2 / 0.035 ;j.页面垂直居中:ExcelApp.ActiveSheet.PageSetup.CenterVertically := 2 / 0.035 ;k.打印单元格网线:ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True ;15 ) 拷贝操作:a.拷贝整个工作表:ed.Range.Copy ;b.拷贝指定区域:ExcelApp.ActiveSheet.Range [ '' A1 : E2 '' ] .Copy ;c.从A1位置开始粘贴:ExcelApp.ActiveSheet.Range. [ '' A1 '' ] .PasteSpecial ;d.从文件尾部开始粘贴:ExcelApp.ActiveSheet.Range.PasteSpecial ;16 ) 插入一行或一列:a.ExcelApp.ActiveSheet.Rows [ 2 ] .Insert ;b.ExcelApp.ActiveSheet.Columns [ 1 ] .Insert ;17 ) 删除一行或一列:a.ExcelApp.ActiveSheet.Rows [ 2 ] .Delete ;b.ExcelApp.ActiveSheet.Columns [ 1 ] .Delete ;18 ) 打印预览工作表:ExcelApp.ActiveSheet.PrintPreview ;19 ) 打印输出工作表:ExcelApp.ActiveSheet.PrintOut ;20 ) 工作表保存:If Not ExcelApp.ActiveWorkBook.Saved ThenExcelApp.ActiveSheet.PrintPreview ;21 ) 工作表另存为:ExcelApp.SaveAs ( '' C : \Excel\Demo1.xls '' ) ;22 ) 放弃存盘:ExcelApp.ActiveWorkBook.Saved := True ;23 ) 关闭工作簿:ExcelApp.WorkBooks.Close ;24 ) 退出Excel:ExcelApp.Quit ;( 二) 使用Delphi 控件方法在Form中分别放入ExcelApplication , ExcelWorkbook和ExcelWorksheet。
delphi数据导入excel
procedure Tdaochu.BitBtn1Click(Sender: TObject);vari,row,column,icount:integer;ExcelApplication1: TExcelApplication;ExcelWorkbook1: TExcelWorkbook;ExcelWorksheet1: TExcelWorksheet;begindm1.ADOQuery5.close;dm1.ADOQuery5.SQL.Clear ;dm1.ADOQuery5.SQL.text:='select * from 记录where 日期between #'+formatdatetime('yyyy-mm-dd',datetimepicker1.date)+'# and#'+formatdatetime('yyyy-mm-dd',datetimepicker2.date)+'# ';dm1.ADOQuery5.Open;//导出TryExcelApplication1:=TExcelApplication.Create(Application);ExcelWorksheet1:=TExcelWorksheet.Create(Application);ExcelWorkbook1:=TExcelWorkbook.Create(Application);ExcelApplication1.Connect;ExceptMessageDlg('Excel没有安装!',mtError, [mbOk], 0);Abort;End;//ExcelApplication1.Visible[0] := false; //不显示过程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);DBGrid1.DataSource.DataSet.Open;row := 2;DBGrid1.DataSource.DataSet.first;for iCount:= 0 to DBGrid1.Columns.Count-1 dobeginExcelWorksheet1.cells.Item[1,iCount+1]:=DBGrid1.Columns.Items[iCount].Title.Caption;end;While Not (DBGrid1.DataSource.DataSet.Eof) dobegincolumn:=1;for i :=1 to DBGrid1.DataSource.DataSet.FieldCount dobeginExcelWorksheet1.Cells.Item[row,column]:=DBGrid1.DataSource.DataSet.field s[i-1].AsString;column:=column+1;end;DBGrid1.DataSource.DataSet.Next;row:=row+1;end;ExcelApplication1.Visible[0]:=True;ExcelApplication1.Disconnect;//ExcelApplication1.Quit;ExcelApplication1.Free;ExcelWorksheet1.Free;ExcelWorkbook1.Free;messagebox(getactivewindow(),'导出结算数据到EXCEL成功!','提示',MB_OK+MB_ICONINFORMATION);end ;关于读取Excel文件数据到数据库,以及从数据库导出数据到Excel的例子数据库:sqlserver表名称:tperson 字段:code varchar(10) name varchar(20)创建一个结构体:typePPerson = ^TPerson;TPerson = recordFCode: String;FName: string;end;相关函数及变量FPerson: PPerson;FPersonList: TList; //用来存数据function LoadExcel: Boolean; //加载Excelfunction SaveToDB: Boolean; //写到数据库function DBToExcel: Boolean; //导出数据两个按钮,一个adoconnection,一个adoquery看到好多人问关于Excel方面的问题,所以写了这个比较简单的例子,有好多细节也没考虑,供参考在真正写的时候,要注意指针的释放等.全部源码:unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ComOBJ, DB, ADODB;typePPerson = ^TPerson;TPerson = recordFCode: String;FName: string;end;typeTForm1 = class(TForm)Button1: TButton;ADOConnection1: TADOConnection;ADOQuery1: TADOQuery;Button2: TButton;procedure FormCreate(Sender: TObject);procedure FormDestroy(Sender: TObject);procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);private{ Private declarations }FPerson: PPerson;FPersonList: TList;function LoadExcel: Boolean;function SaveToDB: Boolean;function DBToExcel: Boolean;public{ Public declarations }end;varForm1: TForm1;implementation{$R *.dfm}Function TForm1.LoadExcel: Boolean;VarRange Matrix: Variant;OpenDialog1: Tope Dialog;iRE: integer;IN_TYPE, vStockName: String;SStockName, sCompany: String;i: Integer;MsExcel, MsExcelWorkBook, MsExcelWorkSheet: Variant;Col1, Col2: String;BeginOpenDialog1:=TOpenDialog.Create (nil);TryOpenDialog1.FileName:='*.CSV;*.xls';If not OpenDialog1.Execute thenBeginResult: = false;Exit;End;MsExcel: = CreateOleObject ('Excel. Application');MsExcelWorkBook: = msExcel.Workbooks.Open (OpenDialog1.FileName);MsExcelWorkSheet: = msExcel.Worksheets.Item [1];ExceptResult: = false;Exit;End;//开始从EXCEL文件读取相关的信息TryTryApplication.ProcessMessages;// 防止进程阻塞,使程序能够响应消息队列中的其他事件。
delphi导出数据至Excel的几种方法及比较
delphi导出数据至E xcel的几种方法及比较一、delphi快速导出ex celuses ComObj,clipbr d;functi on ToExce l(sfilen ame:string; ADOQue ry:TADOQu ery):boolea n;constxlNorm al=-4143;vary : intege r;tsList : TStrin gList;s,filena me :string;aSheet :Varian t;excel:OleVar iant;savedi alog :tsaved ialog;beginResult := true;trye xcel:=Create OleOb ject('Excel.Applic ation');e xcel.workbo oks.add;except//screen.cursor:=crDefa ult;showme ssage('无法调用Ex cel!');exit;end;savedi alog:=tsaved ialog.Create(nil);savedi alog.FileName:=sfilen ame; //存入文件savedi alog.Filter:='Excel文件(*.xls)|*.xls';if savedi alog.Execut e thenbegini f FileEx ists(savedi alog.FileNa me) thentryif application.messag ebox('该文件已经存在,要覆盖吗?','询问',mb_yesno+mb_iconquestion)=idyesthenDelete File(PChar(savedi alog.FileNa me))elsebeginExcel.Quit;savedi alog.free;//screen.cursor:=crDefa ult;Exit;end;exceptExcel.Quit;screen.cursor:=crDefa ult;Exit;end;f ilena me:=savedi alog.FileNa me;end;savedi alog.free;if filena me='' thenbeginresult:=true;Excel.Quit;//screen.cursor:=crDefa ult;exit;end;aSheet:=excel.Worksh eets.Item[1];tsList:=TStrin gList.Create;//tsList.Add('查询结果'); //加入标题s:=''; //加入字段名for y := 0 to adoque ry.fieldC ount- 1 dobegins:=s+adoQue ry.Fields.Fields[y].FieldN ame+#9 ; Applic ation.Proces sMess ages;end;tsList.Add(s);trytryA DOQue ry.First;WhileNot ADOQue ry.Eof dob egins:='';for y:=0 to ADOQue ry.FieldC ount-1 dobegins:=s+ADOQue ry.Fields[y].AsStri ng+#9;Applic ation.Proces sMess ages;end;tsList.Add(s);ADOQue ry.next;end;C lipbo ard.AsText:=tsList.Text;e xceptr esult:=false;end;finall yt sList.Free;aSheet.Paste;Messag eBox(A pplica tion.Handle,'数据导出完毕!','系统提示',MB_ICO NINFO RMA TION or MB_OK);tryi f copy(FileNa me,length(FileNa me)-3,4)<>'.xls' thenFileNa me:=FileNa me+'.xls';E xcel.Active Workb ook.SaveAs(FileNa me, xlNorm al, '', '', False, False);exceptExcel.Quit;s creen.cursor:=crDefa ult;exit;end;Excel.V isibl e := false; //true会自动打开已经保存的ex celExcel.Quit;Excel:= UnAssi gned;end;调用:ToExcel('D:\a.xsl',QueryT oExcel);//路径可以自定义-------------------------------------------------------------------------------------------------******************************************************************************************* ******二、delphi如何导出E XCEL,代码。
【Delphi】汇出Excel时,Excel单元格格式设置(附Delphi操作Excel方法)
【Delphi】汇出Excel时,Excel单元格格式设置(附Delphi操作Excel方法)一个例子:excelworksheet1.Cells.Item[row,3]. numberformatlocal:='$#,##0.00;[红色]-$#,##0.00';excelworksheet1.Cells.Item[row,3].Formula:='=SUM(R[-'+inttostr(row-rowflag+1)+']C:R[-1]C)';excelworksheet1.Cells.Item[row,3].Borders[3].LineStyle :=xlContinuous; excelworksheet1.Cells.Item[row,3].Borders[4].LineStyle :=xlDouble; excelworksheet1.Cells.Item[row,4].Borders[3].LineStyle :=xlContinuous; excelworksheet1.Cells.Item[row,4].Borders[4].LineStyle :=xlDouble; excelworksheet1.Cells.Item[row,4].Formula:='=R[-1]C';注:不知道公式及格式,均可通过录制宏找出对应公式及格式。
效果如下图:资料来自网络单元格设置1.设置单元格线框Excel.ActiveSheet.Range[B10:C13].Borders[N].LineStyle := xlNoneExcel.ActiveSheet.Range[B10:C13].Borders[N].Weight := xlThin边框的类型 Borders[N]xlEdgeLeft 左=1xlEdgeRight 右=2xlEdgeTop 顶=3xlEdgeBottom 底=4xlDiagonalUp 左上右下=5xlDiagonalDown 左下右上=6xlEdgeLeft 外部左边框=7xlEdgeTop 外部上边框=8xlEdgeBottom 外部下边框=9xlEdgeRight 外部右边框=10xlInsideVertical 内部竖线=11xlInsideHorizontal 内部横线=12(其中1:为左 2:右 3:顶 4:底 5:斜\ 6:斜/)线条类型LineStyle,宽度Weight单条线的LineStyle := xlContinuous双条线的LineStyle := xlDouble虚线 xlHairline 1实线 xlThin中实线 xlMedium粗实线 xlThick2.给单元格赋值:Excel.Cells[1,4].Value := 第一行第四列;3.设置第一行字体属性(隶书,蓝色,加粗,下划线):Excel.ActiveSheet.Rows[1] := 隶书; Excel.ActiveSheet.Rows[1].Font.Color := clBlue; Excel.ActiveSheet.Rows[1].Font.Bold := True; Excel.ActiveSheet.Rows[1].Font.UnderLine := True;4.设置整个表字体为9Excel.Cells.Font.Size:=9;5.在第8行之前插入/删除分页符:Excel.WorkSheets[1].Rows[8].PageBreak := 1; (0为删除)6.清除第一行第四列单元格公式:Excel.ActiveSheet.Cells[1,4].ClearContents;7.从数字类型转换成文本类型(不知道格式化字符串,请录制宏,抽出宏中格式化字符串。
将DELPHI中把数据库中数据导出到EXCEL中
将DELPHI中把数据库中数据导出到EXCEL中使用Delphi 控件方法在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。
1)打开ExcelExcelApplication1.Connect;2) 显示当前窗口:ExcelApplication1.Visible[0]:=True;3) 更改Excel 标题栏:ExcelApplication1.Caption := '应用程序调用Microsoft Excel';4) 添加新工作簿:ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));5) 添加新工作表:var Temp_Worksheet: _WorkSheet;beginTemp_Worksheet:=ExcelWorkbook1.WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _WorkSheet;ExcelWorkSheet1.ConnectTo(Temp_WorkSheet);End;6) 打开已存在的工作簿:ExcelApplication1.Workbooks.Open (c:\a.xlsEmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0)7) 设置第2个工作表为活动工作表:ExcelApplication1.WorkSheets[2].Activate; 或ExcelApplication1.WorksSheets[ 'Sheet2' ].Activate;8) 给单元格赋值:ExcelApplication1.Cells[1,4].V alue := '第一行第四列';9) 设置指定列的宽度(单位:字符个数),以第一列为例:ExcelApplication1.ActiveSheet.Columns[1].ColumnsWidth := 5;10) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:ExcelApplication1.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米11) 在第8行之前插入分页符:ExcelApplication1.WorkSheets[1].Rows[8].PageBreak := 1;12) 在第8列之前删除分页符:ExcelApplication1.ActiveSheet.Columns[4].PageBreak := 0;13) 指定边框线宽度:ExcelApplication1.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3;1-左2-右3-顶4-底5-斜( \ ) 6-斜( / )14) 清除第一行第四列单元格公式:ExcelApplication1.ActiveSheet.Cells[1,4].ClearContents;15) 设置第一行字体属性:ExcelApplication1.ActiveSheet.Rows[1] := '隶书';ExcelApplication1.ActiveSheet.Rows[1].Font.Color := clBlue;ExcelApplication1.ActiveSheet.Rows[1].Font.Bold := True;ExcelApplication1.ActiveSheet.Rows[1].Font.UnderLine := True;16) 进行页面设置:a.页眉:ExcelApplication1.ActiveSheet.PageSetup.CenterHeader := '报表演示';b.页脚:ExcelApplication1.ActiveSheet.PageSetup.CenterFooter := '第&P页';c.页眉到顶端边距2cm:ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;d.页脚到底端边距3cm:ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;e.顶边距2cm:ExcelApplication1.ActiveSheet.PageSetup.TopMargin := 2/0.035;f.底边距2cm:ExcelApplication1.ActiveSheet.PageSetup.BottomMargin := 2/0.035;g.左边距2cm:ExcelApplication1.ActiveSheet.PageSetup.LeftMargin := 2/0.035;h.右边距2cm:ExcelApplication1.ActiveSheet.PageSetup.RightMargin := 2/0.035;i.页面水平居中:ExcelApplication1.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035;j.页面垂直居中:ExcelApplication1.ActiveSheet.PageSetup.CenterV ertically := 2/0.035;k.打印单元格网线:ExcelApplication1.ActiveSheet.PageSetup.PrintGridLines := True;17) 拷贝操作:a.拷贝整个工作表:ed.Range.Copy;b.拷贝指定区域:ExcelApplication1.ActiveSheet.Range[ 'A1:E2' ].Copy;c.从A1位置开始粘贴:ExcelApplication1.ActiveSheet.Range.[ 'A1' ].PasteSpecial;d.从文件尾部开始粘贴:ExcelApplication1.ActiveSheet.Range.PasteSpecial;18) 插入一行或一列:a. ExcelApplication1.ActiveSheet.Rows[2].Insert;b. ExcelApplication1.ActiveSheet.Columns[1].Insert;19) 删除一行或一列:a. ExcelApplication1.ActiveSheet.Rows[2].Delete;b. ExcelApplication1.ActiveSheet.Columns[1].Delete;20) 打印预览工作表:ExcelApplication1.ActiveSheet.PrintPreview;21) 打印输出工作表:ExcelApplication1.ActiveSheet.PrintOut;22) 工作表保存:if not ExcelApplication1.ActiveWorkBook.Saved thenExcelApplication1.ActiveSheet.PrintPreview;23) 工作表另存为:ExcelApplication1.SaveAs( 'C:\Excel\Demo1.xls' );24) 放弃存盘:ExcelApplication1.ActiveWorkBook.Saved := True;25) 关闭工作簿:ExcelApplication1.WorkBooks.Close;26) 退出Excel:ExcelApplication1.Quit;ExcelApplication1.Disconnect;Top2 楼songlian(雨)回复于2005-04-29 16:37:15 得分0把数据集导如导excel,adsdata可以换成任意你用导的数据集WriteExcel(AdsData:Tclientdataset; sName, Title: string);varExcelApplication1: TExcelApplication;ExcelWorksheet1: TExcelWorksheet;ExcelWorkbook1: TExcelWorkbook;i, j: integer;filename: string;beginfilename := concat(sName, '.xls');tryExcelApplication1 := TExcelApplication.Create(Application);ExcelWorksheet1 := TExcelWorksheet.Create(Application);ExcelWorkbook1 := TExcelWorkbook.Create(Application);ExcelApplication1.Connect;exceptApplication.Messagebox('Excel没有安装!','Hello',MB_ICONERROR + mb_Ok);Abort;end;tryExcelApplication1.Workbooks.Add(EmptyParam, 0);ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _worksheet);AdsData.First;for j := 0 to AdsData.Fields.Count - 1 dobeginExcelWorksheet1.Cells.item[3, j + 1] := AdsData.Fields[j].DisplayLabel;ExcelWorksheet1.Cells.item[3, j + 1].font.size :='10';end;for i := 4 to AdsData.RecordCount + 3 dobeginfor j := 0 to AdsData.Fields.Count - 1 dobeginExcelWorksheet1.Cells.item[i, j + 1] :=AdsData.Fields[j].Asstring;ExcelWorksheet1.Cells.item[i, j + 1].font.size := '10';end;AdsData.Next;end;ExcelWorksheet1.Columns.AutoFit;ExcelWorksheet1.Cells.item[1, 2] := Title;ExcelWorksheet1.Cells.Item[1, 2].font.size :='14';ExcelWorksheet1.SaveAs(filename);Application.Messagebox(pchar('数据成功导出'+ filename),'信息化建设部',mb_Ok);finallyExcelApplication1.Disconnect;ExcelApplication1.Quit;ExcelApplication1.Free;ExcelWorksheet1.Free;ExcelWorkbook1.Free;end;end;。
Delphi快速导出Excel–指尖风暴TyphonFinger
8.sheet.cells[19, 1] := 'Plant ' + cbbPlant.Text;
9.//一行一行写,每一行的格式可以设置
10.
11.for i := 1 to SGAll.RowCount – 2 do
12.begin
13.for j := 1 to iCount – 1 do
14.begin
15.sData[1,j]:= SGAll.Cells[j, i];//一行数据。也可以为多行数据
16.end;
17.range:=sheet.Range[sheet.cells[i , 1],sheet.cells[i , iCount-1]]; //选择要写的Execl的单元格
18.range.Value2:=sDataபைடு நூலகம் //写入数据
1.procedure Save_Exce(sheet: Variant);
2.var
3.range,sData: Variant;
4.i, j, citem,iCount: Integer;
5.begin
6.sData:=varArrayCreate([1,1,1,iCount-1],varVariant); //定义数组
每份excel里面都带有图表分多个sheet使用文件流的方式虽然速度很快但格式不好控制使用过nativeexcel与xlsreadwriteii控件都不理想
Delphi快速导出Excel–指尖风暴TyphonFinger
因工作中很多时候要导出Excel的Report.每份Excel里面都带有图表,分多个Sheet,使用文件流的方式虽然速度很快,但格式不好控制,使用过NativeExcel与XLSReadWriteII控件,都不理想.下面的方法,速度改善很多!
delphi dbgrid 保存为excel 简单方法
delphi dbgrid 保存为excel 简单方法你可以使用以下简单方法将Delphi的DBGrid保存为Excel:1. 首先,添加Excel的引用。
在Delphi的“工具”菜单下选择“导入类型库”,然后选择Microsoft Excel并点击“创建单元”。
这将在您的Delphi项目中添加对Excel的引用。
2. 在所需的单元(例如表单或数据模块)中,添加以下单元引用:- ComObj:用于与COM对象(例如Excel)进行交互的单元。
- DBGrids:用于访问和操作DBGrid的单元。
3. 创建一个导出数据的按钮(或其他事件),然后在事件处理程序中添加以下代码:```delphiusesComObj, DBGrids;procedure TForm1.Button1Click(Sender: TObject);varExcel, Workbook, Worksheet: Variant;i, j: Integer;begin// 创建Excel对象Excel := CreateOleObject('Excel.Application');Excel.Visible := True;// 创建Workbook和WorksheetWorkbook := Excel.Workbooks.Add;Worksheet := Workbook.Worksheets[1];// 输出DBGrid的标题行for i := 0 to DBGrid1.Columns.Count - 1 doWorksheet.Cells[1, i+1].Value :=DBGrid1.Columns[i].Title.Caption;// 输出DBGrid的数据行for i := 0 to DBGrid1.DataSource.DataSet.RecordCount - 1 dobeginfor j := 0 to DBGrid1.Columns.Count - 1 doWorksheet.Cells[i+2, j+1].Value :=DBGrid1.DataSource.DataSet.FieldByName(DBGrid1.Columns[j].FieldName).AsString;DBGrid1.DataSource.DataSet.Next;end;// 保存Workbook并关闭ExcelWorkbook.SaveAs('path\to\save\file.xlsx');Workbook.Close;Excel.Quit;end;```在上述代码中,使用`CreateOleObject`函数创建了Excel对象,并将其设置为可见。
【Delphi】汇出Excel时,Excel单元格格式设置(附Delphi操作Excel方法)
【Delphi】汇出Excel时,Excel单元格格式设置(附Delphi操作Excel方法)一个例子:excelworksheet1.Cells.Item[row,3]. numberformatlocal:='$#,##0.00;[红色]-$#,##0.00';excelworksheet1.Cells.Item[row,3].Formula:='=SUM(R[-'+inttostr(row-rowflag+1)+']C:R[-1]C)';excelworksheet1.Cells.Item[row,3].Borders[3].LineStyle :=xlContinuous; excelworksheet1.Cells.Item[row,3].Borders[4].LineStyle :=xlDouble; excelworksheet1.Cells.Item[row,4].Borders[3].LineStyle :=xlContinuous; excelworksheet1.Cells.Item[row,4].Borders[4].LineStyle :=xlDouble; excelworksheet1.Cells.Item[row,4].Formula:='=R[-1]C';注:不知道公式及格式,均可通过录制宏找出对应公式及格式。
效果如下图:资料来自网络单元格设置1.设置单元格线框Excel.ActiveSheet.Range[B10:C13].Borders[N].LineStyle := xlNoneExcel.ActiveSheet.Range[B10:C13].Borders[N].Weight := xlThin边框的类型 Borders[N]xlEdgeLeft 左=1xlEdgeRight 右=2xlEdgeTop 顶=3xlEdgeBottom 底=4xlDiagonalUp 左上右下=5xlDiagonalDown 左下右上=6xlEdgeLeft 外部左边框=7xlEdgeTop 外部上边框=8xlEdgeBottom 外部下边框=9xlEdgeRight 外部右边框=10xlInsideVertical 内部竖线=11xlInsideHorizontal 内部横线=12(其中1:为左 2:右 3:顶 4:底 5:斜\ 6:斜/)线条类型LineStyle,宽度Weight单条线的LineStyle := xlContinuous双条线的LineStyle := xlDouble虚线 xlHairline 1实线 xlThin中实线 xlMedium粗实线 xlThick2.给单元格赋值:Excel.Cells[1,4].Value := 第一行第四列;3.设置第一行字体属性(隶书,蓝色,加粗,下划线):Excel.ActiveSheet.Rows[1] := 隶书; Excel.ActiveSheet.Rows[1].Font.Color := clBlue; Excel.ActiveSheet.Rows[1].Font.Bold := True; Excel.ActiveSheet.Rows[1].Font.UnderLine := True;4.设置整个表字体为9Excel.Cells.Font.Size:=9;5.在第8行之前插入/删除分页符:Excel.WorkSheets[1].Rows[8].PageBreak := 1; (0为删除)6.清除第一行第四列单元格公式:Excel.ActiveSheet.Cells[1,4].ClearContents;7.从数字类型转换成文本类型(不知道格式化字符串,请录制宏,抽出宏中格式化字符串。
Delphi解决数据库与EXCEL之间数据导入导出方法比较
Delphi解决数据库与EXCEL之间数据导入导出方法比较廉祥丽
【期刊名称】《宿州教育学院学报》
【年(卷),期】2007(010)006
【摘要】用Delphi实现数据库与Excel之间数据导入导出常常使用server组控件、ole连接和ado等方法,本文对这三种常用的方法从使用方法、执行效率等方面进行了应用比较.希望本文能够抛砖引玉,大家在使用过程中灵活应用,总结出更多好的方法.
【总页数】3页(P136-138)
【作者】廉祥丽
【作者单位】安徽大学,安徽·合肥,230039
【正文语种】中文
【中图分类】TP31
【相关文献】
1.一种用Excel实现基于Delphi数据库查询结果输出的方法 [J], 高美蓉
2.用Delphi建立数据库与Excel之间的数据通信 [J], 涂晓斌;汤鹏志;祖建樱
3.用Delphi处理Excel数据的方法比较 [J], 杨兵
4.一种Excel和MySQL数据库之间数据转换的方法 [J], 徐辉
5.浅谈基于第三方工具的Excel到Oracle数据库之间的数据导入导出方法 [J], 董振
因版权原因,仅展示原文概要,查看原文内容请购买。
delphi excel 例程
delphi excel 例程Delphi Excel 例程:一步一步回答在Delphi中,我们可以使用Excel 例程来实现与Excel文件的交互。
Excel 例程是一组可以通过Delphi编程语言来操作Excel文件的方法和函数。
本文将介绍如何使用Delphi和Excel 例程来创建、读取、写入和操作Excel 文件。
第一步:安装Excel 例程要开始使用Delphi和Excel 例程,我们首先需要安装Excel 例程库。
这可以通过三种方法之一来实现:1. 使用ActiveX组件:在Delphi IDE的“Component”菜单下,选择“Import ActiveX Control”。
在弹出的窗口中,选择“Microsoft Excel xx.x Object Library”(其中"xx.x"表示Excel版本号),然后点击“Install”按钮进行安装。
2. 使用第三方库:你还可以使用第三方库,如TExcelComponent或Flexcel,它们提供了更多的功能和灵活性。
3. 编写自己的Excel 例程:如果你对编程充满信心,你可以自己编写一组Excel 例程,以与Excel文件交互。
不过,这需要一些时间和努力。
第二步:创建一个新的Excel文件在使用Delphi和Excel 例程之前,我们首先需要创建一个Excel文件。
下面是示例代码,展示了如何使用Excel 例程来创建和保存一个新的Excel文件:delphivarExcelApp: Variant;ExcelWorkbook: Variant;ExcelWorksheet: Variant;begin创建Excel应用程序对象ExcelApp := CreateOleObject('Excel.Application');创建一个新的工作簿ExcelWorkbook := ExcelApp.Workbooks.Add;获取第一个工作表ExcelWorksheet := ExcelWorkbook.Worksheets.Item[1];设置单元格的值ExcelWorksheet.Cells[1, 1].Value := 'Hello'; ExcelWorksheet.Cells[1, 2].Value := 'World!';保存工作簿ExcelWorkbook.SaveAs('C:\NewExcelFile.xlsx');关闭Excel应用程序ExcelApp.Quit;end;通过这段代码,我们可以创建一个新的Excel应用程序对象,并在其中创建一个新的工作簿。
DELPHI如何将数据导出到指定格式的EXCEL模版
DELPHI如何将数据导出到指定格式的EXCEL模版DELPHI如何将数据导出到指定格式的EXCEL模版2011-10-31 14:27445人阅读评论(0)收藏举报参考代码1Delphi(Pascal) codepath:=ExtractFilePath(Application.ExeName);if self.OpenDialog1.Execute thenfilename:=self.OpenDialog1.FileName;trySelf.ExcelApplication1:=TExcelApplication.Create(self);Self.ExcelApplication1.Connect;exceptmessagebox(application.Handle,'无法生成Excel报表,请确定安装了Excel后重试','信息',mb_ok or mb_iconinformation);exit;end;Self.ExcelApplication1.Visible[0]:=true;self.ExcelApplication1.DisplayAlerts[0]:=False;self.ExcelApplication1.Workbooks.Open(filename,EmptyPara m,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0);self.ExcelWorkbook1.ConnectT o(Self.ExcelApplication1.Work books[1]);self.ExcelWorksheet1:=TExcelWorkSheet.Create(self);self.ExcelWorksheet1.ConnectT o(Self.ExcelWorkbook1.Works heets[1] as _worksheet);i:=self.StringGrid2.RowCount;for j:=1to i-1dobeginxh:=Self.StringGrid2.Cells[0,j];pscj:=self.StringGrid2.Cells[2,j];kscj:=Self.StringGrid2.Cells[4,j];zpcj:=Self.StringGrid2.Cells[5,j];self.ExcelWorksheet1.cells.Item[l+j,m]:=pscj;self.ExcelWorksheet1.cells.Item[l+j,n]:=kscj;self.ExcelWorksheet1.cells.Item[l+j,k]:=zpcj;end;Self.ExcelWorksheet1.SaveAs(filename);Self.ExcelApplication1.Disconnect;Self.ExcelWorkbook1.Disconnect;Self.ExcelWorksheet1.Disconnect;Delphi(Pascal) codepath:=ExtractFilePath(Application.ExeName);if self.OpenDialog1.Execute thenfilename:=self.OpenDialog1.FileName;trySelf.ExcelApplication1:=TExcelApplication.Create(self);Self.ExcelApplication1.Connect;exceptmessagebox(application.Handle,'无法生成Excel报表,请确定安装了Excel后重试','信息',mb_ok or mb_iconinformation);e…tryexcel := CreateOleObject('Excel.Application'); WorkBook := excel.Workbooks.Add('模板的路径.xls'); Sheet := WorkBook.Worksheets[1];exceptexcel := NULL;DJShow('请先安装Excel97/2000。
Delphi中控制Excel
Excel.ActiveSheet.PageSetup.CenterVertically := 2/0.035;
11.打印单元格网线:
Excel.ActiveSheet.PageSetup.PrintGridLines := True;
12.横向打印
Excel.ActiveSheet.PageSetup.Orientation:=2
第9种=6,3
第12种=1,3
第13种=1,4
第2种=2,1
单条线的LineStyle := xlContinuous
双条线的LineStyle := xlDouble
虚线 xlHairline 1
实线 xlThin
中实线 xlMedium
粗实线 xlThick
XLLineStyle等值参考Excel里面的VisualBasic对象浏览器帮助 (如图)
Excel.ActiveSheet.Columns[A:A].EntireColumn.AutoFit; //第一列
6.居中显示J列
Excel.Columns[J:J].HorizontalAlignment:=3;
7.设置E列单元格式为3位小数数值
Excel.Columns[E:E].NumberFormatLocal:=#,##0.000_
8.设置E列单元格式为文字
Excel.Columns[E:E].NumberFormatLocal:=@
四、单元格设置
1.设置单元格线框
Excel.ActiveSheet.Range[B10:C13].Borders[N].LineStyle := xlNone
用Delphi将数据导入到Excel并控制Excel
用Delphi将数据导入到Excel并控制Excel 用Delphi将数据导入到Excel并控制Excel一、调用Excel的方法:一般情况下有两种方法调用Excel:1、直接使用Delphi自带的组件:在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。
2、动态创建Excel文件:首先创建Excel 对象,使用ComObj,Excel2000:var ExcelApp: Variant;ExcelApp := CreateOleObject( 'Excel.Application' );二、导入数据:在程序中,我们可以将查询到的数据(SQL、Access、)导入到Excel中。
例如:用Adoquery查询Access中的数据:1、先查到所需的数据;2、导入:i:=1;Adoquery.First;while not Adoquery.Eof doBeginExcelApp.WorkSheets[1].Cells[i,1].Value := i;//添加序号的值ExcelApp.WorkSheets[1].Cells[i,2].Value := Adoquery.FieldByName('cp_name').AsString;……Inc(i);Adoquery.Next;End;当然也可以把Adotable、Adoquery、Table、Query等组件的数据导入到Excel中。
三、Excel的处理:如果在你已知Excel格式的情况下,可以控制Excel,如下:1、显示当前窗口:ExcelApp.Visible := True;2、更改 Excel 标题栏:ExcelApp.Caption := '标题内容';3、添加新工作簿:ExcelApp.WorkBooks.Add;4、设置第2个工作表为活动工作表:ExcelApp.WorkSheets[2].Activate;5、给单元格赋值:ExcelApp.Cells[1,1].Value := '第一行第一列';6、设置指定列的宽度(单位:字符个数),以第一列为例:ExcelApp.ActiveSheet.Columns[1].ColumnsWidth := 5;7、设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:ExcelApp.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米8、文字水平居中:Excelid.worksheets[1].Rows[1].HorizontalAlignment := $FFFFEFF4; 上面的文字如果不指定行坐标,那么就会设置所有行数据居中显示。
如何在DELPHI中操作EXCEL电子表格
如何在DELPHI中操作EXCEL电子表格如何在DELPHI中操作EXCEL电子表格EXCEL电子表格作为办公软件OFFICE中的重要组成部份,是日常办公系统的主要助手,因此许多日常所需的业务方面的数据通常是通过电子表格存取。
有时我们需要从日常工作中创建的EXCEL中取得数据进行操作、打印、查询,统计等工作。
在这里我将介绍如何利用delphi完成EXCEL电子表格中数据的操作。
一、新建一项目,从控件栏servers中分别选取控件:excelapplication、excelworkbook1、excelworksheet,放到主窗体from1中,并加入stringgrid、三个按钮、五个显示字段内容的EDIT、二个操作显示记录的label、一个用于打开EXCEL电子表格的控件opendialog等,如下图所示:二、选择excel表'按钮,用于打开EXCEL文件,其代码如下:procedure TForm1.Button1Click(Sender: TObject);var i,j:integer;beginopendialog1.InitialDir:=ExtractFileDir(paramstr(0));//文件的打存放初始路径opendialog1.Execute;TryExcelApplication1.Connect;//EXCEL应用程序ExceptMessageDlg('Excel may not be installed',mtError, [mbOk], 0);Abort;End;ExcelApplication1.Visible[0]:=True;ExcelApplication1.Caption:='Excel Application';tryexcelapplication1.Workbooks.Open(opendialog1.FileName,null,null,null,null,null,null,null,null,null,null,null,null,0);//打开指定的EXCEL 文件exceptbeginExcelApplication1.Disconnect;//出现异常情况时关闭ExcelApplication1.Quit;showmessage('请选择EXCEL电子表格!');exit;end;end;ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);//ExcelWorkbook1与Eexcelapplication1建立连接ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);//Excelworksheet1与Excelworkbook1建立连接//开始从EXCEL中取数,放到stringgrid1中,取完数后关闭EXCELfor i:=1 to 1000 do//最大取值1000for j:=1 to 6 dobeginif trim(excelworksheet1.cells.item[i+1,1])<>'' thenbeginstringgrid1.rowCount:=i+1;stringgrid1.Cells[j,i]:=ExcelWorksheet1.Cells.Item[i+1,j];endelsebeginlabel3.caption:=inttostr(i-1);ExcelApplication1.Disconnect;ExcelApplication1.Quit;//将第一条数据赋给编辑框edit2.text:=stringgrid1.Cells[1,1];edit1.text:=stringgrid1.Cells[2,1];edit3.text:=stringgrid1.Cells[3,1];edit4.text:=stringgrid1.Cells[4,1];edit5.text:=stringgrid1.Cells[5,1];exit;end;end;end;三、'下一条记录'按钮,完成记录向下移动,代码如下: procedure TForm1.Button2Click(Sender: TObject); var x:integer;beginx:=stringgrid1.row+1;if x<> stringgrid1.RowCount thenbeginstringgrid1.row:=stringgrid1.row+1;label1.caption:=inttostr(x);edit2.text:=stringgrid1.Cells[1,x];edit1.text:=stringgrid1.Cells[2,x];edit3.text:=stringgrid1.Cells[3,x];edit4.text:=stringgrid1.Cells[4,x];edit5.text:=stringgrid1.Cells[5,x];exit;endelseshowmessage('已到第一条记录!');end;四、'上一条记录',完成记录上移,代码如下:var x:integer;beginx:=stringgrid1.row-1;if x<>0 thenbeginstringgrid1.row:=stringgrid1.row-1;label1.caption:=inttostr(x);edit2.text:=stringgrid1.Cells[1,x];edit1.text:=stringgrid1.Cells[2,x];edit3.text:=stringgrid1.Cells[3,x];edit4.text:=stringgrid1.Cells[4,x];edit5.text:=stringgrid1.Cells[5,x];exit;endelseshowmessage('已到最后一条记录!');end;五、stringgrid中上下移动时代码:procedure TForm1.StringGrid1Click(Sender: TObject);var i:integer;begini:=stringgrid1.Row;label1.caption:=inttostr(i);edit1.text:=stringgrid1.Cells[2,i];edit2.text:=stringgrid1.Cells[1,i];edit3.text:=stringgrid1.Cells[3,i];edit4.text:=stringgrid1.Cells[4,i];edit5.text:=stringgrid1.Cells[5,i];end;六、运行程序,点击按钮1打开excel表格。
delphi excel 例程 -回复
delphi excel 例程-回复[Delphi Excel 例程] 创建、操作和导入、导出Excel 文件的示例简介:Delphi 是一种面向对象的编程语言,常被用于开发Windows 平台下的应用程序。
对于许多开发人员来说,数据的导入、导出和处理是非常常见的任务。
在本例程中,我们将学习如何使用Delphi 操作和导入、导出Excel 文件。
下面是一个详细的步骤指南。
第一步:创建一个新的Delphi 项目首先,打开Delphi IDE,然后创建一个新的VCL 应用程序项目。
我们将使用Visual Component Library(VCL)来构建我们的应用程序。
第二步:添加Excel 文件库在Delphi IDE 的主菜单栏中,点击"Component",然后选择"Import Component"。
在对话框中,找到"Microsoft Excel" 组件并选中它,然后点击"OK"。
第三步:设计用户界面在Delphi 的窗体设计器中,设计一个用户界面,以便用户可以选择导入或导出Excel 文件,并进行必要的操作。
第四步:导入Excel 文件在用户界面中,添加一个"导入Excel 文件" 的按钮,并在单击事件中编写以下代码。
pascalusesExcelApp, ExcelWB;procedure TForm1.Button1Click(Sender: TObject);varExcel: _Application; Excel 应用程序对象Workbook: _Workbook; 工作簿对象Worksheet: _Worksheet; 工作表对象begintryExcel := CoExcelApplication.Create; 创建Excel 应用程序对象Workbook :=Excel.Workbooks.Open('C:\path\to\your\excel.xlsx'); 打开Excel 文件Worksheet := Workbook.Worksheets[1]; 获取第一个工作表在这里,你可以通过Worksheet 对象获取和处理Excel 文件的数Workbook.Close(True); 关闭并保存Excel 文件Excel.Quit; 关闭Excel 应用程序finallyWorksheet := nil;Workbook := nil;Excel := nil;end;end;在此代码示例中,我们使用`CoExcelApplication` 类的`Create` 方法创建了一个Excel 应用程序的实例。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
end;
tsList.Add(s);
try
try
ADOQuery.First;
While Not ADOQuery.Eof do
s,filename :string;
aSheet :Variant;
excel :OleVariant;
savedialog :tsavedialog;
begin
Result := true;
try
excel:=CreateOleObject('Excel.Application');
var h,k:intering;
begin
try
Excelid := CreateOLEObject('Excel.Application');
except
MessageBox(Application.Handle,'数据导出完毕!','系统提示',MB_ICONINFORMATION or MB_OK);
try
if copy(FileName,length(FileName)-3,4)<>'.xls' then
aSheet.range['A1:H1'].Font.size := 20; //字体
设置A1到H1的单元格的字体大小为20,可以Column[n]设置某列的字体。
aSheet.range['A1:H1'].Font.bold := true;
设置A1到H1的单元格的字体 加粗
一;
delphi 快速导出excel
uses ComObj,clipbrd;
function ToExcel(sfilename:string; ADOQuery:TADOQuery):boolean;
const
xlNormal=-4143;
var
y : integer;
tsList : TStringList;
//tsList.Add('查询结果'); //加入标题
s:=''; //加入字段名
for y := 0 to adoquery.fieldCount - 1 do
begin
s:=s+adoQuery.Fields.Fields[y].FieldName+#9 ;
*************************************************************************************************
二;
delphi如何导出EXCEL,代码。非第3方控件
首先在Uses处加上ComObj
procedure TForm1.Button1Click(Sender: TObject);
Excelid.WorkSheets[1].Cells[2,1].Value := '组别编号';
Excelid.WorkSheets[1].Cells[2,2].Value := '公司编号';
Excelid.WorkSheets[1].Cells[2,3].Value := '组别名称';
Application.MessageBox('Excel没有安装!', '提示信息', MB_OK+MB_ICONASTERISK+MB_DEFBUTTON1+MB_APPLMODAL);
Exit;
end;
try
ADOQuery1.Close;
aSheet.range[TMP].Borders[2].LineStyle := 1;
aSheet.range[TMP].Borders[3].LineStyle := 1;
aSheet.range[TMP].Borders[4].LineStyle := 1;
aSheet.range[TMP].Borders[1].Weight := 2;
savedialog.FileName:=sfilename; //存入文件
savedialog.Filter:='Excel文件(*.xls)|*.xls';
if savedialog.Execute then
begin
if FileExists(savedialog.FileName) then
Excelid.worksheets[1].Range['a1:a1'].HorizontalAlignment := $FFFFEFF4;
Excelid.worksheets[1].Range['a1:a1'].VerticalAlignment := $FFFFEFF4;
result:=true;
Excel.Quit;
//screen.cursor:=crDefault;
exit;
end;
aSheet:=excel.Worksheets.Item[1];
tsList:=TStringList.Create;
excel.workbooks.add;
except
//screen.cursor:=crDefault;
showmessage('无法调用Excel!');
exit;
end;
savedialog:=tsavedialog.Create(nil);
end;
调用:
ToExcel('D:\a.xsl',QueryToExcel);//路径可以自定义
-------------------------------------------------------------------------------------------------
Excelid.worksheets[1].Range['A1:c1'] := '宋体';
Excelid.worksheets[1].Range['A1:c1'].Font.Size := 9;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from jj_department');
ADOQuery1.Open;
k:=ADOQuery1.RecordCount;
Excelid.Visible := True;
Excelid.WorkBooks.Add;
Excelid.worksheets[1].range['A1:c1'].Merge(True);
Excelid.WorkSheets[1].Cells[1,1].Value :='部门编码表' ;
Exit;
end;
except
Excel.Quit;
savedialog.free;
screen.cursor:=crDefault;
FileName:=FileName+'.xls';
Excel.ActiveWorkbook.SaveAs(FileName, xlNormal, '', '', False, False);
except
Excel.Quit;
try
if application.messagebox('该文件已经存在,要覆盖吗?','询问',mb_yesno+mb_iconquestion)=idyes then
DeleteFile(PChar(savedialog.FileName))
Clipboard.AsText:=tsList.Text;
except
result:=false;
end;
finally
tsList.Free;
end;
aSheet.Paste;
aSheet.Columns[N].NumberFormatlocal := '@'; //文本
设置某列的单元格格式为文本格式,N为列号
aSheet.Columns[N].ColumnWidth := Length;
设置某列的单元格宽度, Length为具体的长度
aSheet.range[TMP].Borders[1].LineStyle := 1;
else
begin
Excel.Quit;
savedialog.free;
//screen.cursor:=crDefault;
设置某一区域的边框为实线边框(1,2,3,4代表上,下,左,右,LineStyle边框的线类型,1代表实线,其他可以自己验证;Weight代表变现宽度
aSheet.range['A1:H1'].HorizontalAlignment := 3; //居中
设置A1到H1的单元格内容居中, 3代表居中,其他可以自己试试
Exit;
end;
filename:=savedialog.FileName;
end;
savedialog.free;
if filename='' then
begin