VC EXCEL 字体加粗,该如何处理
VC EXCEL 字体加粗
//输出合计,把合计那一排的所有格都设置成=SUM(XX:XX)格式
strhanghaoheji.Format("%d",hanghao+2);
rgMyRge.SetItem(_variant_t(strhanghaoheji),_variant_t("B"),_variant_t("合计"));
CString hejihou="";
for (int m=0;m<25;m++)
{
hejihou = "=SUM("+lieall[m]+"6:"+lieall[m]+strhanghao+")";
rgMyRge.SetItem(_variant_t(strhanghaoheji),_variant_t(lieall[m]),_variant_t(hejihou));
}
//合计输出经过测试,无错。在EXCEL里能正常生成。
//设置合计那一排为粗体
COleFont ft;
CString hejileft,hejiright="";
hejileft = "A"+strhanghaoheji;
hejiright = "AD"+strhanghaoheji;
rgMyRge.AttachDispatch(wsMysheet.GetRange(_variant_t(hejileft),_variant_t(hejiright)));
ft.AttachDispatch(rgMyRge.GetFont());//注释掉之后无错但无法实现加粗
ft.SetBold(TRUE);
编译无错,但运行提示:找不到成员。
把红色那一行注释掉,就不会提示“找不到成员”,但无法实现字体加粗的效果。
恳请各位老师的帮助!
------解决方案--------------------
把你的 COleFont 用ExcelFont代替 或者引入Excel的Font类
Range range(sheet.GetRange(_variant_t(_T("A1")),_variant_t(_T("A1))
ExcelFont font;
font.AttachDispatch(range.GetFont());
if(font.m_lpDispatch)
{
font.SetItalic( _variant_t( (style & FONT_ITALIC)? true:false ) ); //倾斜
font.SetBold( _variant_t( (style & FONT_BOLD)? true:false ) ); //加粗
font.SetUnderline( _variant_t( (style & FONT_UNDERLINE)? true:false ) ); //下划线
}
//输出合计,把合计那一排的所有格都设置成=SUM(XX:XX)格式
strhanghaoheji.Format("%d",hanghao+2);
rgMyRge.SetItem(_variant_t(strhanghaoheji),_variant_t("B"),_variant_t("合计"));
CString hejihou="";
for (int m=0;m<25;m++)
{
hejihou = "=SUM("+lieall[m]+"6:"+lieall[m]+strhanghao+")";
rgMyRge.SetItem(_variant_t(strhanghaoheji),_variant_t(lieall[m]),_variant_t(hejihou));
}
//合计输出经过测试,无错。在EXCEL里能正常生成。
//设置合计那一排为粗体
COleFont ft;
CString hejileft,hejiright="";
hejileft = "A"+strhanghaoheji;
hejiright = "AD"+strhanghaoheji;
rgMyRge.AttachDispatch(wsMysheet.GetRange(_variant_t(hejileft),_variant_t(hejiright)));
ft.AttachDispatch(rgMyRge.GetFont());//注释掉之后无错但无法实现加粗
ft.SetBold(TRUE);
编译无错,但运行提示:找不到成员。
把红色那一行注释掉,就不会提示“找不到成员”,但无法实现字体加粗的效果。
恳请各位老师的帮助!
------解决方案--------------------
把你的 COleFont 用ExcelFont代替 或者引入Excel的Font类
Range range(sheet.GetRange(_variant_t(_T("A1")),_variant_t(_T("A1))
ExcelFont font;
font.AttachDispatch(range.GetFont());
if(font.m_lpDispatch)
{
font.SetItalic( _variant_t( (style & FONT_ITALIC)? true:false ) ); //倾斜
font.SetBold( _variant_t( (style & FONT_BOLD)? true:false ) ); //加粗
font.SetUnderline( _variant_t( (style & FONT_UNDERLINE)? true:false ) ); //下划线
}
- C/C++ code
///////////////////////////////////////////////////////////////////////////// // ExcelFont wrapper class class ExcelFont : public COleDispatchDriver { public: ExcelFont() {} // Calls COleDispatchDriver default constructor ExcelFont(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {} ExcelFont(const ExcelFont& dispatchSrc) : COleDispatchDriver(dispatchSrc) {} // Attributes public: // Operations public: LPDISPATCH GetApplication(); long GetCreator(); LPDISPATCH GetParent(); VARIANT GetBackground(); void SetBackground(const VARIANT& newValue); VARIANT GetBold(); void SetBold(const VARIANT& newValue); VARIANT GetColor(); void SetColor(const VARIANT& newValue); VARIANT GetColorIndex(); void SetColorIndex(const VARIANT& newValue); VARIANT GetFontStyle(); void SetFontStyle(const VARIANT& newValue); VARIANT GetItalic(); void SetItalic(const VARIANT& newValue); VARIANT GetName(); void SetName(const VARIANT& newValue); VARIANT GetOutlineFont(); void SetOutlineFont(const VARIANT& newValue); VARIANT GetShadow(); void SetShadow(const VARIANT& newValue); VARIANT GetSize(); void SetSize(const VARIANT& newValue); VARIANT GetStrikethrough(); void SetStrikethrough(const VARIANT& newValue); VARIANT GetSubscript(); void SetSubscript(const VARIANT& newValue); VARIANT GetSuperscript(); void SetSuperscript(const VARIANT& newValue); VARIANT GetUnderline(); void SetUnderline(const VARIANT& newValue); };