C++ 保存Excel文件(带密码保护)

最近有客户需求报表保存为xls的功能,需要保存的文件设置密码保护,特进行尝试!

Workbook.SaveAs method (Excel)

参数详情:https://docs.microsoft.com/en-us/office/vba/api/excel.workbook.saveas

 C++ Code 

1
2
3
4
5
6

 

void SaveAs(VARIANT &Filename, VARIANT &FileFormat, VARIANT &Password, VARIANT &WriteResPassword, VARIANT &ReadOnlyRecommended, VARIANT &CreateBackup, long AccessMode, VARIANT &ConflictResolution, VARIANT &AddToMru, VARIANT &TextCodepage, VARIANT &TextVisualLayout, VARIANT &Local)
{
    static BYTE parms[] = VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_I4 VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT ;
    InvokeHelper(0x785, DISPATCH_METHOD, VT_EMPTY, NULL, parms, &Filename, &FileFormat, &Password, &WriteResPassword, &ReadOnlyRecommended, &CreateBackup, AccessMode, &ConflictResolution, &AddToMru, &TextCodepage, &TextVisualLayout, &Local);
}

调用实例:

 C++ Code 

1
2
3
4
5
6
7
8
9
10
11
12
13
14

 

BOOL bReadOnlyRecommended = TRUE;
BOOL bCreateBackup = TRUE;
BOOL bLocal = TRUE;
CString strXlsPath = _T("C:\\test.xls");
m_book.SaveAs(  _variant_t(strXlsPath),                         // Filename
                _variant_t(-4143)/*xlWorkbookNormal*/,          // FileFormat
                _variant_t(_T("123")),                          // Password
                _variant_t(_T("123")),                          // WriteResPassword
                _variant_t(bReadOnlyRecommended),               // ReadOnlyRecommended
                _variant_t(bCreateBackup),                      // CreateBackup
                _variant_t(2)/*xlShared*/,                      // AccessMode
                _variant_t(2)/*xlLocalSessionChanges*/,         // ConflictResolution
                vtMissing, vtMissing, vtMissing,
                _variant_t(bLocal));                            // Local

最终成功打开:

 

希望大家能把自己的所学和他人一起分享,不要去鄙视别人索取时的贪婪,因为最应该被鄙视的是不肯分享时的吝啬。

要在QT C++保存Excel文件,可以使用QAxObject类库。首先,需要将QAxObject类库添到项目中,在.pro文件中添以下行: ``` QT += axcontainer ``` 下面是一个示例代码,用于创建并保存一个Excel文件: ```cpp // 创建Excel应用程序对象 QAxObject* excel = new QAxObject("Excel.Application", this); // 使Excel应用程序对象可见 excel->setProperty("Visible", true); // 创建一个新的工作簿 QAxObject* workbooks = excel->querySubObject("Workbooks"); QAxObject* workbook = workbooks->querySubObject("Add"); // 获取工作表对象 QAxObject* sheets = workbook->querySubObject("Sheets"); QAxObject* sheet = sheets->querySubObject("Item(int)", 1); // 在单元格A1写入数据 QAxObject* cell = sheet->querySubObject("Range(QString)", "A1"); cell->setProperty("Value", "Hello World!"); // 保存工作簿为Excel文件 workbook->dynamicCall("SaveAs(const QString&)", QDir::toNativeSeparators("C:/example.xlsx")); // 关闭工作簿和Excel应用程序对象 workbook->dynamicCall("Close()"); excel->dynamicCall("Quit()"); ``` 在上面的示例中,我们创建了一个Excel应用程序对象,并将其设置为可见。然后,我们创建一个新的工作簿,获取工作表对象,并在单元格A1中写入数据。最后,我们将工作簿保存Excel文件,并关闭工作簿和Excel应用程序对象。 注意,保存路径应该使用QDir::toNativeSeparators()函数进行处理,以确保路径分隔符符合当前操作系统的标准。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值