如何用c++將生成的word檔案設定成橫向,然后分欄成2欄
【11】設定欄目個數和欄目的寬度
這里一定要注意add函式的邏輯
1 SectionsPtr word_sections = doc->GetSections();
2 long num = word_sections->GetCount();
3 SectionPtr word_section = word_sections->Item(num-1);
4 PageSetupPtr page_setup = word_section->GetPageSetup();
5 TextColumnsPtr text_cols = page_setup>GetTextColumns();
6 text_cols->PutEvenlySpaced(0);
7 text_cols->Add(COleVariant(col_width), COleVariant((long)0), COleVariant((long)false));
這是別人代碼,為啥和我的不太一樣,我找他的改寫,提示函式不接受三個引數
uj5u.com熱心網友回復:
這應該是使用COM組件來完成,純C++完成有困難,所以幫你移走了。uj5u.com熱心網友回復:
// 設定為頁面方向和頁邊距if ( oPageSetup.get_Orientation() == 0 ) // 若為縱向則設定為橫向,縱向wdOrientPortrait=0,橫向wdOrientLandscape=1
{
oPageSetup.put_Orientation(1); // 橫向
// 設定上下左右變距,單位緹,以下引數設定的頁邊距是“適中”
oPageSetup.put_TopMargin( (float) 72); // 適中時72=2.54cm,默認時90=3.17cm;10≈0.35cm
oPageSetup.put_BottomMargin( (float) 72); // 適中時72=2.54cm,默認時90=3.17cm;10≈0.35cm
oPageSetup.put_LeftMargin( (float) 54); // 適中時54=1.9cm,默認時72=2.54cm
oPageSetup.put_RightMargin( (float) 54); // 適中時54=1.9cm,默認時72=2.54cm
//設定成A3橫向,420*2.835=1190.7 297*2.835=842
oPageSetup.put_PageHeight((float) 842);
oPageSetup.put_PageWidth((float) 1190.7);
//lpDispatch=oPageSetup.get_TextColumns();
/*SectionsPtr word_sections = docx_active.get_Sections();
long num = word_sections->get_Count();
SectionPtr word_section = word_sections->Item(num-1);
PageSetupPtr page_setup = word_section->get_PageSetup();*/
TextColumnsPtr text_cols = oPageSetup.get_TextColumns();
text_cols->put_EvenlySpaced(COleVariant(TRUE));
text_cols->Add(COleVariant((long)2), COleVariant((long)0), COleVariant((long)false));
//oPageSetup.put_TextColumns((LPDISPATCH) 2);
}
error C2440: “<function-style-cast>”: 無法從“int”轉換為“COleVariant”無建構式可以接受源型別,或建構式多載決策不明確
error C2660: “TextColumns::Add”: 函式不接受 3 個引數
這是出錯那段代碼
uj5u.com熱心網友回復:
跟版本有關系。uj5u.com熱心網友回復:
是word版本嗎,我是word2003uj5u.com熱心網友回復:
哈哈,設定成功了,太簡單了,謝謝各位大神,雖然沒人回復uj5u.com熱心網友回復:
在Word2003中開始記錄宏,手動完成所需功能,結束記錄宏,按Alt+F11鍵,查看剛才記錄的宏對應的VBA代碼。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/126439.html
