VC如何改变Excel的列宽?

sy_hys 2009-01-21 12:14:20
我现在要将数据导入Excel文件,但是有些数据的长度超过了默认的列宽,现在想用VC来改变Excel某个列的列宽,应该如何实现呀?
...全文
511 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
normanlai 2009-01-23
  • 打赏
  • 举报
回复
//获取指定列
inline Excel::RangePtr GetRangeByCol(
Excel::_Worksheet* pSheet,
long nCol //指定起始列
)
{
if( nCol<1 || nCol>0xFF )
return NULL;

return pSheet->Columns->Item[nCol];
}
//更新指定列的宽度
inline BOOL SetColumnWidth(Excel::Range* pCol,double dWidth)
{
pCol->ColumnWidth = dWidth;
return TRUE;
}

必须有Excel::_Worksheet* pSheet,然后先调用第一个函数,再调用第二个函数
n_yHHy_n 2009-01-23
  • 打赏
  • 举报
回复
其实这个是修改行宽的,这个是个例子,列宽可以仿照这个些,可以在excel中录个宏,看看修改列宽需要什么函数,那个函数在vc可能是前面加get或者set。
n_yHHy_n 2009-01-21
  • 打赏
  • 举报
回复
BOOL CExcelCom::SetRowHeight(CString strStart, CString strEnd, long lHeight)
{
BOOL bRet = FALSE;

if (TRUE == m_bSheetIsOK)
{
Range iRange;
Range iEnRow;

TRY
{
//Get range
iRange = m_iSheet.GetRange(_variant_t(strStart),
_variant_t(strEnd));
iRange.SetRowHeight(_variant_t(lHeight));
bRet = TRUE;
}
CATCH_ALL(e)
{
m_strErrMsg = _GetErrText( e );
}
END_CATCH_ALL

iEnRow.ReleaseDispatch();
iRange.ReleaseDispatch();
}

return bRet;
}
ddszhan 2009-01-21
  • 打赏
  • 举报
回复
在Excel中录制一段调整列宽的宏,看看宏的代码。
Sub Macro1()
'
' Macro1 Macro
' 宏由 XXXXX 录制,时间: 2009-1-21
'

'
Columns("D:D").ColumnWidth = 22.38
End Sub

把宏中的语句改成VC中使用的,就行了,前提是你使用COM的方法来操纵Excel。

sy_hys 2009-01-21
  • 打赏
  • 举报
回复
楼上的能给我全部源码吗?你的代码不全,我看不明白!

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧