首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi7 显示excel单元格内容出现有关问题

2012-04-12 
delphi7 显示excel单元格内容出现问题。我连接上excel后,通过显示,把excel单元格内容显示在tstringgrid上,

delphi7 显示excel单元格内容出现问题。
我连接上excel后,通过显示,把excel单元格内容显示在tstringgrid上,但是有个单元格显示内容为"#DIV/0!";一读到这里就出现could not convert variant of type(error)into type (string),我该如何解决?

[解决办法]
这个单元格应该是一个公式,而且发生了计算“除零”错误
[解决办法]
could not convert variant of type(error)into type (string),类型转换错误,没有看看程序中断在哪里,没源码无真像
[解决办法]
/*********************************
/ Excel文件导到StringGrid控件中
/
/参数:
/ AGrid:TStringGrid StringGrid控件
/ FileName:String 带路径的Excel文件
/返回:
/ True:成功导入
/ False:导入失败
/
/引入:Use ComObj
/
/注释:
/ 2005-03-28 by Baken.Zhang 
*********************************/
function ExcelToStringGrid(AGrid: TStringGrid;const FileName: string): Boolean;
const
xlCellTypeLastCell = $0000000B;
var
XLApp, Sheet: OLEVariant;
RangeMatrix: Variant;
x, y, k, r: Integer;
begin
Result := False;
try
XLApp := CreateOleObject('Excel.Application');
except
Application.MessageBox('错误提示','系统没有安装Excel, 无法创建文件!',MB_OK);
Exit;
end;

try
XLApp.Visible := False;
XLApp.Workbooks.Open(FileName);
Sheet := XLApp.Workbooks[ExtractFileName(FileName)].WorkSheets[1];

Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
x := XLApp.ActiveCell.Row;
y := XLApp.ActiveCell.Column;

AGrid.RowCount := x + 1;
AGrid.ColCount := y + 1;

RangeMatrix := XLApp.Range['A1', XLApp.Cells.Item[x, y]].Value;
k := 1;
repeat
for r := 1 to y do
begin
try
AGrid.Cells[ r , k ] := RangeMatrix[k, r];
except
AGrid.Cells[ r , k ] := '#DIV!0';
end;
end;
Inc(k, 1);
AGrid.RowCount := k + 1;
until k > x;
RangeMatrix := Unassigned;
finally
if not VarIsEmpty(XLApp) then
begin
XLApp.Quit;
XLAPP := Unassigned;
Sheet := Unassigned;
Result := True;
end;
end;
end;
[解决办法]
/*********************************
/ Excel文件导到StringGrid控件中
/
/参数:
/ AGrid:TStringGrid StringGrid控件
/ FileName:String 带路径的Excel文件
/返回:
/ True:成功导入
/ False:导入失败
/
/引入:Use ComObj
/
/注释:
/ 2005-03-28 by Baken.Zhang 
*********************************/
function ExcelToStringGrid(AGrid: TStringGrid;const FileName: string): Boolean;
const
xlCellTypeLastCell = $0000000B;
var
XLApp, Sheet: OLEVariant;
RangeMatrix: Variant;
x, y, k, r: Integer;
begin
Result := False;
try
XLApp := CreateOleObject('Excel.Application');
except
Application.MessageBox('错误提示','系统没有安装Excel, 无法创建文件!',MB_OK);
Exit;
end;

try
XLApp.Visible := False;
XLApp.Workbooks.Open(FileName);
Sheet := XLApp.Workbooks[ExtractFileName(FileName)].WorkSheets[1];

Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
x := XLApp.ActiveCell.Row;
y := XLApp.ActiveCell.Column;

AGrid.RowCount := x + 1;
AGrid.ColCount := y + 1;

RangeMatrix := XLApp.Range['A1', XLApp.Cells.Item[x, y]].Value;
k := 1;
repeat
for r := 1 to y do


begin
try
AGrid.Cells[ r , k ] := RangeMatrix[k, r];
except
AGrid.Cells[ r , k ] := '#DIV!0';
end;
end;
Inc(k, 1);
AGrid.RowCount := k + 1;
until k > x;
RangeMatrix := Unassigned;
finally
if not VarIsEmpty(XLApp) then
begin
XLApp.Quit;
XLAPP := Unassigned;
Sheet := Unassigned;
Result := True;
end;
end;
end;

热点排行