想在delph中进行excel相关的编程,请问哪有相关的参考手册下载?比如我想查sheet有些什么属性。
解决方案 »
- WH_CALLWNDPROC为什么拦截不到WM_CLOSE
- 关于DBDateTime的bug
- help一把,'ADOTable1: Dataset not in edit or insert mode',我怎么查不出是哪错了啊
- 看到方法后面的sender:Tobject,不知道做什么用,是不是考虑代码通用,不用写具体控件名啊?
- Delphi 如何運行“exe”文件
- 关于DBGRID的小问题。
- 用QRePort,怎么样可以在win98与win2000或NT下都能自定义纸张的大小?
- ADO
- Delphi 跨域iframe里面的内容 找到部分代码希望可以补全
- 虎落平阳被犬欺
- 我就是lovend,有个问题请教 aiirii(ari-淘金坑) ,
- BDE连接access
有他就ok了!
csdn,delphibbs等论坛里面有很多
请问大家用delph编程时遇到excel方面的问题时查什么资料?还是都到网上去刨?
var
MDSTR : String;
I : integer;
Scxls : String;
begin
try
MDSTR:=edit2.Text;
i:=pos('\',MDSTR);
if i>0 then
begin
Scxls:=copy(MDSTR,1+1,Length(MDSTR));
delete(MDSTR,1+1,Length(MDSTR));
end else
begin
Application.MessageBox('文件格式不正确!','提示',mb_ok+mb_iconinformation);
Result:=false;
exit;
end; i:=pos('.',Scxls);
if i>0 then
Delete(Scxls,i,Length(Scxls))
else
begin
Application.MessageBox('文件格式不正确!','提示',mb_ok+mb_iconinformation);
Result:=false;
exit;
end; Scxls:=Scxls+'_'+Formatdatetime('yyyymmddhhmmss',now())+'.xls';
MDSTR:=MDSTR+Scxls;
Mdfile:=MDSTR;
CopyFile(pchar(edit2.Text),pchar(MDSTR),True);
result:=true;
Except
Result:=false;
end;
end;Function TForm1.ConnectionExcelFile(Mdfile : String) : boolean;
begin
{ MdConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;'+
'Data Source='+Mdfile+
';Mode=Read;Extended Properties=Excel 8.0;Persist Security Info=True;'+
'Jet OLEDB:System database="";Jet OLEDB:Registry Path="";'+
'Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=35;'+
'Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;'+
'Jet OLEDB:Global Bulk Transactions=1;'+
'Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;'+
'Jet OLEDB:Encrypt Database=False;'+
'Jet OLEDB:Don''t Copy Locale on Compact=False;'+
'Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False';}
try
MdConnection1.Connected:=true;
SourceConnection1.Connected:=true;
// MdTable2.TableName:=SourceTable1.TableName;
// MdTable2.Connection:=MdConnection1;
SourceTable1.Active:=true;
// MdTable2.Active:=true;
Result:=true;
except
application.MessageBox('连接失败','提示',mb_ok+mb_iconinformation);
Result:=false;
end;
end;
SourceConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Password="";'+
'Data Source='+Trim(Edit2.Text)+
';Mode=Read;Extended Properties=Excel 8.0;Persist Security Info=True';
try
SourceConnection1.Connected:=true;
SourceTable1.Active:=true;
except
application.MessageBox('连接失败!','提示',mb_ok+mb_iconinformation);
exit;
end;
> 首先?建 Excel ?象,使用ComObj:
> var ExcelID: Variant;
> ExcelID := CreateOleObject( 'Excel.Application' );
> 1) ?示?前窗口:
> ExcelID.Visible := True;
> 2) 更改 Excel ???:
> ExcelID.Caption := '?用程序?用 Microsoft Excel';
> 3) 添加新工作簿:
> ExcelID.WorkBooks.Add;
> 4) 打?已存在的工作簿:
> ExcelID.WorkBooks.Open( 'C:ExcelDemo.xls' );
> 5) ?置第2?工作表?活?工作表:
> ExcelID.WorkSheets[2].Activate;
> 或
> ExcelID.WorksSheets[ 'Sheet2' ].Activate;
> 6) ??元格?值:
> ExcelID.Cells[1,4].Value := '第一行第四列';
> 7) ?置指定列的?度(?位:字符??),以第一列?例:
> ExcelID.ActiveSheet.Columns[1].ColumnsWidth := 5;
> 8) ?置指定行的高度(?位:磅)(1磅=0.035厘米),以第二行?例:
> ExcelID.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米
> 9) 在第8行之前插入分?符:
> ExcelID.WorkSheets[1].Rows[8].PageBreak := 1;
> 10) 在第8列之前?除分?符:
> ExcelID.ActiveSheet.Columns[4].PageBreak := 0;
> 11) 指定?框??度:
> ExcelID.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3;
> 1-左 2-右 3-? 4-底 5-斜( ) 6-斜( / )
> 12) 清除第一行第四列?元格公式:
> ExcelID.ActiveSheet.Cells[1,4].ClearContents;
> 13) ?置第一行字体?性:
> ExcelID.ActiveSheet.Rows[1].Font.Name := '??';
> ExcelID.ActiveSheet.Rows[1].Font.Color := clBlue;
> ExcelID.ActiveSheet.Rows[1].Font.Bold := True;
> ExcelID.ActiveSheet.Rows[1].Font.UnderLine := True;
> 14) ?行?面?置:
> a.?眉:
> ExcelID.ActiveSheet.PageSetup.CenterHeader := '?表演示';
> b.??:
> ExcelID.ActiveSheet.PageSetup.CenterFooter := '第&P?';
> c.?眉到?端?距2cm:
> ExcelID.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;
> d.??到底端?距3cm:
> ExcelID.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;
> e.??距2cm:
> ExcelID.ActiveSheet.PageSetup.TopMargin := 2/0.035;
> f.底?距2cm:
> ExcelID.ActiveSheet.PageSetup.BottomMargin := 2/0.035;
> g.左?距2cm:
> ExcelID.ActiveSheet.PageSetup.LeftMargin := 2/0.035;
> h.右?距2cm:
> ExcelID.ActiveSheet.PageSetup.RightMargin := 2/0.035;
> i.?面水平居中:
> ExcelID.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035;
> j.?面垂直居中:
> ExcelID.ActiveSheet.PageSetup.CenterVertically := 2/0.035;
> k.打印?元格网?:
> ExcelID.ActiveSheet.PageSetup.PrintGridLines := True;
> 15) 拷?操作:
> a.拷?整?工作表:
> ExcelID.ActiveSheet.Used.Range.Copy;
> b.拷?指定?域:
> ExcelID.ActiveSheet.Range[ 'A1:E2' ].Copy;
> c.?A1位置?始粘?:
> ExcelID.ActiveSheet.Range.[ 'A1' ].PasteSpecial;
> d.?文件尾部?始粘?:
> ExcelID.ActiveSheet.Range.PasteSpecial;
> 16) 插入一行或一列:
> a. ExcelID.ActiveSheet.Rows[2].Insert;
> b. ExcelID.ActiveSheet.Columns[1].Insert;
> 17) ?除一行或一列:
> a. ExcelID.ActiveSheet.Rows[2].Delete;
> b. ExcelID.ActiveSheet.Columns[1].Delete;
> 18) 打印??工作表:
> ExcelID.ActiveSheet.PrintPreview;
> 19) 打印?出工作表:
> ExcelID.ActiveSheet.PrintOut;
> 20) 工作表保存:
> if not ExcelID.ActiveWorkBook.Saved then
> ExcelID.ActiveSheet.PrintPreview;
> 21) 工作表另存?:
> ExcelID.SaveAs( 'C:ExcelDemo1.xls' );
> 22) 放?存?:
> ExcelID.ActiveWorkBook.Saved := True;
> 23) ??工作簿:
> ExcelID.WorkBooks.Close;
> 24) 退出 Excel:
> ExcelID.Quit;
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 then
ExcelApp.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。 1) 打开Excel
ExcelApplication1.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;
begin
Temp_Worksheet:=ExcelWorkbook1.
WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _WorkSheet;
ExcelWorkSheet1.ConnectTo(Temp_WorkSheet);
End;
6) 打开已存在的工作簿:
ExcelApplication1.Workbooks.Open (c:\a.xls
EmptyParam,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].Value := '第一行第四列';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].Font.Name := '隶书';
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.CenterVertically := 2/0.035;
k.打印单元格网线:
ExcelApplication1.ActiveSheet.PageSetup.PrintGridLines := True;17) 拷贝操作:a.拷贝整个工作表:
ExcelApplication1.ActiveSheet.Used.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 then
ExcelApplication1.ActiveSheet.PrintPreview;23) 工作表另存为:
ExcelApplication1.SaveAs( 'C:\Excel\Demo1.xls' );24) 放弃存盘:
ExcelApplication1.ActiveWorkBook.Saved := True;25) 关闭工作簿:
ExcelApplication1.WorkBooks.Close;26) 退出 Excel:
ExcelApplication1.Quit;
ExcelApplication1.Disconnect;(三) 使用Delphi 控制Excle二维图
在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet
var asheet1,achart, range:variant;1)选择当第一个工作薄第一个工作表
asheet1:=ExcelApplication1.Workbooks[1].Worksheets[1];2)增加一个二维图
achart:=asheet1.chartobjects.add(100,100,200,200);3)选择二维图的形态
achart.chart.charttype:=4;4)给二维图赋值
series:=achart.chart.seriescollection;
range:=sheet1!r2c3:r3c9;
series.add(range,true);
5)加上二维图的标题
achart.Chart.HasTitle:=True;
achart.Chart.ChartTitle.Characters.Text:=’ Excle二维图’ 6)改变二维图的标题字体大小
achart.Chart.ChartTitle.Font.size:=6;7)给二维图加下标说明
achart.Chart.Axes(xlCategory, xlPrimary).HasTitle := True;
achart.Chart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text := '下标说明';8)给二维图加左标说明
achart.Chart.Axes(xlValue, xlPrimary).HasTitle := True;
achart.Chart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text := '左标说明';9)给二维图加右标说明
achart.Chart.Axes(xlValue, xlSecondary).HasTitle := True;
achart.Chart.Axes(xlValue, xlSecondary).AxisTitle.Characters.Text := '右标说明';10)改变二维图的显示区大小
achart.Chart.PlotArea.Left := 5;
achart.Chart.PlotArea.Width := 223;
achart.Chart.PlotArea.Height := 108;11)给二维图坐标轴加上说明
achart.chart.s
http://www.anylib.com
在DELPHI里可以导入EXCEL的类型库,这样就可以看到EXCEL的接口中提供的所有属性方法了。VC6里也有相关的工具,好像叫Type Library什么的,可以看到COM组件接口的定义的
ExcelApplication1.Cells[1,4].Value := '2/45';
结果在excel中显示为"Feb-45",居然“智能”的给我转换成了2月45号!真牛!
请问各位怎么才能解决这个问题?
设置单元格格式为文本就可以了 NumberFormatLocal = "@"
1、Excel中宏的录制
工具,宏,录制新宏,宏名顺便起一个;以上面的设置单元格格式为文本作为例子,就是选中你要设置格式的单元格或区域,右键,设置单元格格式,数字页中选择“文本”,确定;再到工具,宏,打开VB编辑器,在模块里头就可以看到刚才所做的操作的宏了。
2、Delphi中导入Excel的类型库
Project,Import Type Library,在列表里选中类型库,如果是Excel 2000应该叫Microsoft Excel 9.0 Object Library,Create Unit就会生成类型库的Delphi Wrapper。这样Excel的接口中提供的所有属性方法都能看到了。