【问题标题】:delphi ole excel container, save filedelphi ole excel容器,保存文件
【发布时间】:2012-01-30 16:19:15
【问题描述】:

这个c++ question 在 Delphi 中的语法是什么?

在使用 oleContainer 后,尝试执行 SaveDocumentAs 无效。我认为这可能是一个不错的选择。

更新:感谢您的翻译,但是调用后 excel 文件变了

var
  ExcelOle: TOleContainer;
begin
  ExcelOLE.CreateObjectFromFile(FileName, False);
  ExcelOle.OleObject.application.workbooks[1].save;
end;

【问题讨论】:

  • 你想做什么?这个问题看起来对你没有帮助。它没有使用包含的。它正在自动化独立的 Excel。
  • 你想把接受的答案翻译成 delphi 吗?如果答案是肯定的,试试这个:excel.Workbooks[1].SaveAs('d:\case1.xls');
  • @none,并不是我太在意,但我确实回答了你最初的问题。恕我直言,您的编辑使它成为一个全新的问题。
  • @kobik 你确实回答了这个问题,但我还没有成功实施和测试解决方案,所以它不得不等待。

标签: delphi excel delphi-2009 ole


【解决方案1】:

只需创建一个 Ole 对象:

uses ComObj, Excel;

var Excel: OleVariant;
Excel := CreateOleObject('EXCEL.Application');
Excel.Application.Workbooks.Add;
Excel.Application.Workbooks[1].SaveAs('c:\test.xlsx', xlWorkbookDefault); // or xlOpenXMLWorkbook (51)
Excel.Application.Quit;

Excel.pas

unit Excel;

interface

uses Windows, Activex;

// originally from Excel97.pas
// XlFileFormat constants
type
  XlFileFormat = TOleEnum;
const
  xlAddIn = $00000012;
  xlCSV = $00000006;
  xlCSVMac = $00000016;
  xlCSVMSDOS = $00000018;
  xlCSVWindows = $00000017;
  xlDBF2 = $00000007;
  xlDBF3 = $00000008;
  xlDBF4 = $0000000B;
  xlDIF = $00000009;
  xlExcel2 = $00000010;
  xlExcel2FarEast = $0000001B;
  xlExcel3 = $0000001D;
  xlExcel4 = $00000021;
  xlExcel5 = $00000027;
  xlExcel7 = $00000027;
  xlExcel9795 = $0000002B;
  xlExcel4Workbook = $00000023;
  xlIntlAddIn = $0000001A;
  xlIntlMacro = $00000019;
  xlWorkbookNormal = $FFFFEFD1;
  xlSYLK = $00000002;
  xlTemplate = $00000011;
  xlCurrentPlatformText = $FFFFEFC2;
  xlTextMac = $00000013;
  xlTextMSDOS = $00000015;
  xlTextPrinter = $00000024;
  xlTextWindows = $00000014;
  xlWJ2WD1 = $0000000E;
  xlWK1 = $00000005;
  xlWK1ALL = $0000001F;
  xlWK1FMT = $0000001E;
  xlWK3 = $0000000F;
  xlWK4 = $00000026;
  xlWK3FM3 = $00000020;
  xlWKS = $00000004;
  xlWorks2FarEast = $0000001C;
  xlWQ1 = $00000022;
  xlWJ3 = $00000028;
  xlWJ3FJ3 = $00000029;
  xlExcel12 =50;
  xlExcel8 = 56;
  xlHtml = 44;
  xlOpenXMLAddIn = 55;
  xlOpenXMLTemplate = 54;
  xlOpenXMLTemplateMacroEnabled = 53;
  xlOpenXMLWorkbook = 51;
  xlOpenXMLWorkbookMacroEnabled = 52;
  xlTemplate8 = 17;
  xlUnicodeText = 42;
  xlWebArchive = 45;
  xlWorkbookDefault = 51;
  xlXMLSpreadsheet = 46;

implementation

end.

【讨论】:

  • 这是翻译的答案,但是由于某些奇怪的原因,它损坏了 xlsx 文件。
  • @none 如果要保存 .xlsx 文件,您可能需要在保存时指定格式
  • @kobik,你确定xlWorkbookDefault 会一直有效吗?它不取决于某些设置吗?使用 xlXMLSpreadsheet 会不会更安全?我没有Office,所以我无法检查,但here 他们说.xlsx 是XML 文件格式。
  • @TLama 最终归根结底,很难确切知道他/她想要什么。
  • @TLama,是的,我做到了。 xlXMLSpreadsheet 用于保存 .xml 文件。 xlsx 格式其实是xlOpenXMLWorkbook = xlWorkbookDefault (51)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-04
  • 1970-01-01
  • 1970-01-01
  • 2017-01-20
  • 1970-01-01
  • 2015-05-01
  • 1970-01-01
相关资源
最近更新 更多