604
社区成员
发帖
与我相关
我的任务
分享
OleFunction("Text", WideString("我是第三行第2列的批注"));
另外,测试的时候哪一步出错,出错的具体信息尽量提供一下,方便别人帮助你找到错误原因并解决问题。#include <comobj.hpp>
bool OpenExcel(Variant &excelApp, String xlsFile)
{
try
{
excelApp = CreateOleObject("Excel.Application");
}
catch(...)
{
MessageBox(0, TEXT("启动 Excel 出错"), TEXT("OLE"), MB_OK | MB_ICONERROR);
return false;
}
#ifdef _DEBUG
excelApp.OlePropertySet("Visible", true);
#else
excelApp.OlePropertySet("Visible", false);
#endif
// 如果XLS文件存在则打开,不存在则新建一个Workbook
if (FileExists(xlsFile))
excelApp.OlePropertyGet("Workbooks").OleFunction("Open", WideString(xlsFile));
else
excelApp.OlePropertyGet("Workbooks").OleFunction("Add", 1);
return true;
}
bool SaveExcel(Variant excelApp, String xlsFile)
{
bool result = excelApp.OlePropertyGet("ActiveWorkbook")
.OleFunction("SaveAs", WideString(xlsFile));
return result;
}
bool CloseExcel(Variant excelApp)
{
bool result = excelApp.OleFunction("Quit");
excelApp = Unassigned;
return result;
}
void AddComment(Variant range, String comment)
{
range.OleFunction("AddComment");
// 63 63 72 75 6E 2E 63 6F 6D
range.OlePropertyGet("Comment").OlePropertySet("Visible", false);
range.OlePropertyGet("Comment").OleFunction("Text", WideString(comment));
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Variant excelApp;
if (!OpenExcel(excelApp, L"")) return;
Variant sheet = excelApp.OlePropertyGet("ActiveWorkbook").OlePropertyGet("Sheets", 1);
Variant range = sheet.OlePropertyGet("Cells", 3, 2);
AddComment(range, L"我是第三行第2列的批注");
// ...
// CloseExcel(excelApp);
}