C++ 在VC+中创建多个Excel工作表+;

C++ 在VC+中创建多个Excel工作表+;,c++,excel,visual-c++,office-interop,C++,Excel,Visual C++,Office Interop,如何在VC++中创建包含多个工作表的Excel文件并保存。Excel从2003年起支持XML。XML可以有多个工作表 您可以从VC++生成XML文件。此XML文件不能通过Excel以Excel工作表的形式打开 要查找XML的格式/结构,请创建一个excel文件,并在两张工作表中输入几个单元格的数据。然后将文件另存为XML 您可以编写代码来生成类似的XML。请参阅和/或以找到要调用的正确方法。工作簿界面中的SaveAs和SaveCopyAs方法可能就是您要查找的方法。答案是XL->Workshee

如何在VC++中创建包含多个工作表的Excel文件并保存。

Excel从2003年起支持XML。XML可以有多个工作表

您可以从VC++生成XML文件。此XML文件不能通过Excel以Excel工作表的形式打开

要查找XML的格式/结构,请创建一个excel文件,并在两张工作表中输入几个单元格的数据。然后将文件另存为XML


您可以编写代码来生成类似的XML。

请参阅和/或以找到要调用的正确方法。工作簿界面中的SaveAs和SaveCopyAs方法可能就是您要查找的方法。

答案是
XL->Worksheets->Add()工作表按相反顺序添加

#import "C:\Program Files (x86)\Common Files\microsoft shared\OFFICE12\mso.dll"
#import "C:\Program Files (x86)\Common Files\microsoft shared\VBA\VBA6\VBE6EXT.OLB"
#import "C:\Program Files (x86)\Microsoft Office\Office12\excel.exe" \
rename("DialogBox","ExcelDialogBox") rename("RGB","ExcelRGB") \
exclude("IFont","IPicture")

#include <stdexcept>
#include <iostream>

int main()
{
  CoInitialize(NULL);
  try
  {
    Excel::_ApplicationPtr XL;
    HRESULT hr = XL.CreateInstance(L"Excel.Application");

    Excel::_WorkbookPtr workbook = XL->Workbooks->Add(Excel::xlWorksheet); 
    Excel::_WorksheetPtr worksheet = XL->ActiveSheet;
    worksheet->Name = "last page";

    worksheet = XL->Worksheets->Add(); // adding worksheets!!
    worksheet->Name = "other page";

    worksheet = XL->Worksheets->Add();
    worksheet->Name = "some page";

    worksheet->SaveAs("c:\\test.xls");
    workbook->Close();
    XL->Quit();
  }
  catch(_com_error &ce)
  {
    std::cout<<"caught" << std::endl;
  }

  CoUninitialize();

  system("pause");
  return 0;
}
导入“C:\Program Files(x86)\Common Files\microsoft shared\OFFICE12\mso.dll” #导入“C:\Program Files(x86)\Common Files\microsoft shared\VBA\VBA6\VBE6EXT.OLB” #导入“C:\ProgramFiles(x86)\Microsoft Office\Office12\excel.exe”\ 重命名(“DialogBox”、“ExcelDialogBox”)重命名(“RGB”、“ExcelRGB”)\ 排除(“IFont”、“IPicture”) #包括 #包括 int main() { 共初始化(空); 尝试 { Excel::_应用程序PTR XL; HRESULT hr=XL.CreateInstance(L“Excel.Application”); Excel::_WorkbookPtr工作簿=XL->工作簿->添加(Excel::XL工作表); Excel::_Worksheetpttrworksheet=XL->ActiveSheet; 工作表->名称=“最后一页”; 工作表=XL->工作表->添加();//添加工作表!! 工作表->名称=“其他页面”; 工作表=XL->工作表->添加(); 工作表->Name=“某些页面”; 工作表->另存为(“c:\\test.xls”); 工作簿->关闭(); XL->Quit(); } 捕获(com错误和ce) {
std::coutXL->Workbooks->Add(Excel::xlsheet);Excel:_worksheetpttrpsheet=XL->ActiveSheet;pSheet->SaveAs(szExcelFileName.GetBuffer());我正在使用此代码保存XL工作表,但它仅保存ActiveSheet。我需要在xls文件中保存所有工作表,而不是:pSheet->SaveAs(szExcelFileName.GetBuffer());执行:XL->ActiveWorkbook->SaveAs(szExcelFileName.GetBuffer());XL->ActiveWorkbook->SaveAs(szExcelFileName.GetBuffer());这是无效的方法。ActiveWorkbook应该是XL->工作簿的一部分