Delphi XE3 Excel 不像 Delphi XE 那样工作
Delphi XE3 Excel not working like with Delphi XE
我刚刚安装了 Delphi XE3。以前的版本是XE。
我的程序生成 Excel 个文件(我使用的是 Office 2013)。
我导入了 Excel 类型库。
当我使用 Delphi XE 时,此代码有效。
当我使用 Delphi XE3 时,我收到一条错误消息,如下所示:
'HorizontalAlignment property can not be set'
XE3 有什么变化?
代码如下:
VAR Myworkbook, range, excelapp : olevariant;
Begin
ExcelApp:=CreateOleObject('Excel.Application');
ExcelApp.Visible:=true;
MyWorkbook:=ExcelApp.Workbooks.Add;
MyWorkbook.Activate;
MyWorkbook.Activesheet.PageSetup.Orientation := xlPortrait;
MyWorkbook.Activesheet.PageSetup.PaperSize := xlPaperA4;
MyWorkbook.Activesheet.PageSetup.LeftMargin := CMtoPT(1);
MyWorkbook.Activesheet.PageSetup.RightMargin := CMtoPT(1);
MyWorkbook.Activesheet.PageSetup.TopMargin := cmtopt(1.5);
MyWorkbook.Activesheet.PageSetup.BottomMargin := cmtopt(1.5);
Range:=ExcelApp.Range['A1','A1'];
Range.HorizontalAlignment := xlLeft;
Range.VerticalAlignment := xlCenter;
END
我认为是因为您正在使用后期绑定,例如将 ExcelApp
声明为 olevariant
VAR Myworkbook, range, excelapp : olevariant;
Begin
ExcelApp:=CreateOleObject('Excel.Application');
那么您在 Excel 应用程序上调用的任何不正确的内容都将由 Excel 而不是 Delphi 处理。这意味着要么 HorizontalAlignment 不可设置 属性,要么 xlLeft 在某种程度上不正确。
这不太可能与您的 Delphi 版本有关。
我有解决方案:
Range.VerticalAlignment := xlCenter
应该是:
Range.VerticalAlignment := integer(xlCenter)
我必须将常量显式转换为整数。这是我找到它的地方:http://forums.embarcadero.com/thread.jspa?threadID=106493
我刚刚安装了 Delphi XE3。以前的版本是XE。 我的程序生成 Excel 个文件(我使用的是 Office 2013)。 我导入了 Excel 类型库。 当我使用 Delphi XE 时,此代码有效。 当我使用 Delphi XE3 时,我收到一条错误消息,如下所示: 'HorizontalAlignment property can not be set' XE3 有什么变化?
代码如下:
VAR Myworkbook, range, excelapp : olevariant;
Begin
ExcelApp:=CreateOleObject('Excel.Application');
ExcelApp.Visible:=true;
MyWorkbook:=ExcelApp.Workbooks.Add;
MyWorkbook.Activate;
MyWorkbook.Activesheet.PageSetup.Orientation := xlPortrait;
MyWorkbook.Activesheet.PageSetup.PaperSize := xlPaperA4;
MyWorkbook.Activesheet.PageSetup.LeftMargin := CMtoPT(1);
MyWorkbook.Activesheet.PageSetup.RightMargin := CMtoPT(1);
MyWorkbook.Activesheet.PageSetup.TopMargin := cmtopt(1.5);
MyWorkbook.Activesheet.PageSetup.BottomMargin := cmtopt(1.5);
Range:=ExcelApp.Range['A1','A1'];
Range.HorizontalAlignment := xlLeft;
Range.VerticalAlignment := xlCenter;
END
我认为是因为您正在使用后期绑定,例如将 ExcelApp
声明为 olevariant
VAR Myworkbook, range, excelapp : olevariant;
Begin
ExcelApp:=CreateOleObject('Excel.Application');
那么您在 Excel 应用程序上调用的任何不正确的内容都将由 Excel 而不是 Delphi 处理。这意味着要么 HorizontalAlignment 不可设置 属性,要么 xlLeft 在某种程度上不正确。
这不太可能与您的 Delphi 版本有关。
我有解决方案:
Range.VerticalAlignment := xlCenter
应该是:
Range.VerticalAlignment := integer(xlCenter)
我必须将常量显式转换为整数。这是我找到它的地方:http://forums.embarcadero.com/thread.jspa?threadID=106493