T
thlt
Unregistered / Unconfirmed
GUEST, unregistred user!
//请帮忙看看这段代码(很短的),关于设置Excel的列宽问题
//有结果请发Email给我,或直接贴在这里,谢谢! ahthc@163.com
我记得这段代码好象是“迷糊”朋友给我的,但是最近没有与他联系上。
//下面一段代码可以将查询的结果导入Excel,但是无论如何用程序的方式改变不了Excel的列宽(例如我要将第一行第一列的宽度设置为4),我在DFW上查了很多类似的代码都无效,请帮忙看看,谢谢。
procedure Tzhtj.Button1Click(Sender: TObject);
var
i,j,row,column:integer;
begin
Try
ExcelApplication1.Connect;
Except
MessageDlg('Excel 没有安装',mtError, [mbOk], 0);
Abort;
End;
ExcelApplication1.Visible[0]:=true;
ExcelApplication1.Caption:='Excel Not Istalled!';
ExcelApplication1.Workbooks.Add(Null,0);
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);
//ExcelWorksheet1.Columns[1].ColumnWidth:=4 ; //这样写无效,编译不通过
//编译时提示: Class does not have a default property
//( 种类没有一个默认的性质? 是这个意思吗?)
//ExcelApplication1.ExcelWorkbook1.ExcelWorksheet1.Columns[1].ColumnWidth:=4 ; //这样写也无效,编译不通过
//ActiveSheet.Column[1].ColumnsWidth := 5; //这样还是写无效,到底要怎么写呢?
query2.Open;
row:=1;
column:=1;
for j:= 0 to query2.FieldCount-1 do
begin
ExcelWorksheet1.Cells.Item[row,column]:=query2.fields[j].FieldName;
column:=column+1;
end;
row:=2;
While Not(query2.Eof) do
begin
column:=1;
for i:=1 to query2.FieldCount do
begin
ExcelWorksheet1.Cells.Item[row,column]:=query2.fields[i-1].AsString;
column:=column+1;
// ExcelWorksheet1.Cells.item[2,1].Value := '111'; //这样写有效,但是只能改变某一单元格的值,不能改变列宽
// ExcelWorksheet1.Cells[2,1].Value := '111'; //但是这样写无效,这是我在DFW上找的代码
end;
query2.Next;
row:=row+1;
end;
query2.first;
ExcelWorkbook1.Disconnect;
ExcelWorksheet1.Disconnect;
ExcelApplication1.DisConnect;
end;
//有结果请发Email给我,或直接贴在这里,谢谢! ahthc@163.com
我记得这段代码好象是“迷糊”朋友给我的,但是最近没有与他联系上。
//下面一段代码可以将查询的结果导入Excel,但是无论如何用程序的方式改变不了Excel的列宽(例如我要将第一行第一列的宽度设置为4),我在DFW上查了很多类似的代码都无效,请帮忙看看,谢谢。
procedure Tzhtj.Button1Click(Sender: TObject);
var
i,j,row,column:integer;
begin
Try
ExcelApplication1.Connect;
Except
MessageDlg('Excel 没有安装',mtError, [mbOk], 0);
Abort;
End;
ExcelApplication1.Visible[0]:=true;
ExcelApplication1.Caption:='Excel Not Istalled!';
ExcelApplication1.Workbooks.Add(Null,0);
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);
//ExcelWorksheet1.Columns[1].ColumnWidth:=4 ; //这样写无效,编译不通过
//编译时提示: Class does not have a default property
//( 种类没有一个默认的性质? 是这个意思吗?)
//ExcelApplication1.ExcelWorkbook1.ExcelWorksheet1.Columns[1].ColumnWidth:=4 ; //这样写也无效,编译不通过
//ActiveSheet.Column[1].ColumnsWidth := 5; //这样还是写无效,到底要怎么写呢?
query2.Open;
row:=1;
column:=1;
for j:= 0 to query2.FieldCount-1 do
begin
ExcelWorksheet1.Cells.Item[row,column]:=query2.fields[j].FieldName;
column:=column+1;
end;
row:=2;
While Not(query2.Eof) do
begin
column:=1;
for i:=1 to query2.FieldCount do
begin
ExcelWorksheet1.Cells.Item[row,column]:=query2.fields[i-1].AsString;
column:=column+1;
// ExcelWorksheet1.Cells.item[2,1].Value := '111'; //这样写有效,但是只能改变某一单元格的值,不能改变列宽
// ExcelWorksheet1.Cells[2,1].Value := '111'; //但是这样写无效,这是我在DFW上找的代码
end;
query2.Next;
row:=row+1;
end;
query2.first;
ExcelWorkbook1.Disconnect;
ExcelWorksheet1.Disconnect;
ExcelApplication1.DisConnect;
end;