我采用delphi控件的方法(而不是动态创建“Excel.Application”的方法),目前已经实现了把数据数据输出到excel中,可是一些控制性的功能却不知如何实现,主要包括:
1.设置指定列的宽度
葵花宝典提供的方法是:
ActiveSheet.Columns[1].ColumnsWidth := 5;
但是这个方法在我这里却会出现如下错误:
Class does not have a default property2.如何设置指定列的自动换行属性
如果在excel中,可以通过“设置单元格格式-〉对齐-〉自动换行”实现,可如果用代码怎么实现?3.选定一些列以后如何将它们合并?郁闷ing请高手指点!
1.设置指定列的宽度
葵花宝典提供的方法是:
ActiveSheet.Columns[1].ColumnsWidth := 5;
但是这个方法在我这里却会出现如下错误:
Class does not have a default property2.如何设置指定列的自动换行属性
如果在excel中,可以通过“设置单元格格式-〉对齐-〉自动换行”实现,可如果用代码怎么实现?3.选定一些列以后如何将它们合并?郁闷ing请高手指点!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Excel2000, OleServer, DB, ADODB, Grids, DBGrids,comobj;type
TForm1 = class(TForm)
DataSource1: TDataSource;
DBGrid1: TDBGrid;
ADOQuery1: TADOQuery;
ExcelApplication1: TExcelApplication;
ExcelChart1: TExcelChart;
ExcelWorksheet1: TExcelWorksheet;
ExcelWorkbook1: TExcelWorkbook;
ExcelOLEObject1: TExcelOLEObject;
Button1: TButton;
SaveDialog1: TSaveDialog;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);var
fieldcounts,j,i:integer;
begin
excelapplication1.Connect ;
excelapplication1.Workbooks.Add(null,0);
excelworkbook1.ConnectTo(excelapplication1.Workbooks[1]);
excelworksheet1.ConnectTo(excelworkbook1.Sheets[1] as _worksheet);
fieldcounts:=dbgrid1.FieldCount;
For j:=0 to FieldCounts-1 do
excelworksheet1.Cells.Item[1,j+1]:=dbgrid1.Fields[j].FieldName;
i:=2;
adoquery1.First;
while not adoquery1.Eof do begin
For j:=0 to FieldCounts-1 do
excelworksheet1.Cells.Item[i,j+1]:=adoquery1.Fields[j].Value;
i:=i+1;
adoquery1.Next;
end;
if savedialog1.Execute then
begin
adoquery1.First;
excelworksheet1.SaveAs(savedialog1.FileName);
excelworkbook1.Close;
excelapplication1.Quit ;
end;
adoquery1.First;
end;end.
不过上述的几个问题已经解决的,具体如下:
1.设置指定列的宽度
这个问题在我这里实现起来有点别扭,不过也算是绕弯解决了(先交差再说 ^_^),代码为:
ExcelWorksheet1.Columns.ColumnWidth:=2;(设置所有列)
ExcelWorksheet1.Range['a1','a3000'].ColumnWidth :=3;(设置第a列)
2.设置指定列的自动换行属性
ExcelWorksheet1.Range['a1','a3000'].WrapText :=true;
3.合并某些单元格
ExcelWorksheet1.Range['a1','c2'].Merge(true);另外补充几点,希望对大家有帮助1.设置某个单元格的对齐属性:
ExcelWorksheet1.Range['a1','a1'].HorizontalAlignment :=xlHAlignCenter;
或者xlHAlignLeft,或者xlHAlignRight
同理,也可以设置VerticalAlignment
2.一个比较有用的方法是ShrinkToFit,作用是某一格的文字与宽度匹配(如果太大了会自动缩小)
3.设置某一列的数据格式
excel会自动去掉小数部分最后面的零,这一点很让人讨厌,所以必须设置它的数字格式:
ExcelWorksheet1.Range['a1','a3000'].NumberFormat:='#,###,###0.00';最后说明一点,delphi中没有excel的帮助,网上也不好找,这些都是我一个一个试出来的!辛苦啊!wjlsmail,我的email是[email protected]