1. 程式人生 > >C++ 儲存Excel檔案(帶密碼保護)

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

最終成功開啟: