function SaveAsExcelFile(AGrid: TStringGrid; ASheetName, AFileName: string): Boolean;
const
xlWBATWorksheet = -4167;
var
XLApp, Sheet, Data: OLEVariant;
i, j: Integer;
begin
// Prepare Data
Data := VarArrayCreate([1, AGrid.RowCount, 1, AGrid.ColCount], varVariant);
for i := 0 to AGrid.ColCount - 1 do
for j := 0 to AGrid.RowCount - 1 do
Data[j + 1, i + 1] := AGrid.Cells[i, j];
// Create Excel-OLE Object
{就这段执行不下去????
for i := 0 to AGrid.ColCount- 1 do
XLApp.ActiveSheet.Columns[i].ColumnsWidth := AGrid.ColWidths[i];
}
Result := False;
XLApp := CreateOleObject('Excel.Application');
try
// Hide Excel
XLApp.Visible := false;
// Add new Workbook
XLApp.Workbooks.Add(xlWBatWorkSheet);
Sheet := XLApp.Workbooks[1].WorkSheets[1];
Sheet.Name := ASheetName;
// Fill up the sheet
Sheet.Range[RefToCell(1, 1), RefToCell(AGrid.RowCount,
AGrid.ColCount)].Value := Data;
// Save Excel Worksheet
try
XLApp.Workbooks[1].SaveAs(AFileName);
Result := True;
except
// Error
end;
finally
// Quit Excel
if not VarIsEmpty(XLApp) then
begin
XLApp.DisplayAlerts := False;
XLApp.Quit;
XLAPP := Unassigned;
Sheet := Unassigned;
end;
end;
end;function RefToCell(ARow, ACol: Integer): string;
begin
Result := Chr(Ord('A') + ACol - 1) + IntToStr(ARow);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
if SaveAsExcelFile(stringGrid1, 'My Stringgrid Data', ExtractFilePath (Application.ExeName)+'MyExcelFile.xls') then
ShowMessage('StringGrid saved!');
end;
为什么XLApp.ActiveSheet出错?
const
xlWBATWorksheet = -4167;
var
XLApp, Sheet, Data: OLEVariant;
i, j: Integer;
begin
// Prepare Data
Data := VarArrayCreate([1, AGrid.RowCount, 1, AGrid.ColCount], varVariant);
for i := 0 to AGrid.ColCount - 1 do
for j := 0 to AGrid.RowCount - 1 do
Data[j + 1, i + 1] := AGrid.Cells[i, j];
// Create Excel-OLE Object
{就这段执行不下去????
for i := 0 to AGrid.ColCount- 1 do
XLApp.ActiveSheet.Columns[i].ColumnsWidth := AGrid.ColWidths[i];
}
Result := False;
XLApp := CreateOleObject('Excel.Application');
try
// Hide Excel
XLApp.Visible := false;
// Add new Workbook
XLApp.Workbooks.Add(xlWBatWorkSheet);
Sheet := XLApp.Workbooks[1].WorkSheets[1];
Sheet.Name := ASheetName;
// Fill up the sheet
Sheet.Range[RefToCell(1, 1), RefToCell(AGrid.RowCount,
AGrid.ColCount)].Value := Data;
// Save Excel Worksheet
try
XLApp.Workbooks[1].SaveAs(AFileName);
Result := True;
except
// Error
end;
finally
// Quit Excel
if not VarIsEmpty(XLApp) then
begin
XLApp.DisplayAlerts := False;
XLApp.Quit;
XLAPP := Unassigned;
Sheet := Unassigned;
end;
end;
end;function RefToCell(ARow, ACol: Integer): string;
begin
Result := Chr(Ord('A') + ACol - 1) + IntToStr(ARow);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
if SaveAsExcelFile(stringGrid1, 'My Stringgrid Data', ExtractFilePath (Application.ExeName)+'MyExcelFile.xls') then
ShowMessage('StringGrid saved!');
end;
为什么XLApp.ActiveSheet出错?
解决方案 »
- 我现在主要不知道怎么循环读这个流,怎么判断文件结束?!流的写法取行数据比较奇怪,如果按流这样读我怎么像以前读文件那样判断我每行的
- 这是什么错?
- 求解:监听ICMP包。500分送上(可连续给分)。
- 上csdn的女人有多少谁可以统计。
- 报表问题,高手来帮忙啊!
- 再次提问加100分。用DELPHI如何编写ISAPI过滤器(IIS)
- 怎样实现asp和activeForm之间的参数传递!!!
- 问一个可能很弱智的问题:在delphi + sql 7.0 下:table.edit...table.post 运行间会不会自动锁住正在操作的记录而不会被网络上其他的用
- 通过http 获取远程文本内容
- 外包业务合作
- 急,帮忙看看这段代码:OleContainer1调用excel 的问题
- 进销存
http://community.csdn.net/Expert/topic/3238/3238916.xml?temp=.7017938
不好意思,麻烦你再回答一下,想着给你加分结果不知论坛有什么故障,现在什么都看不到了!
只是控制EXCEL的格子的宽度的时候,依照兄弟的方法不行的,不知兄弟有没有试过,有什么好的方法麻烦告诉我,谢谢!