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

最终成功打开:

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值