把CListCtrl的内容导出到Excel里面,然后怎么让Excel自动保存?

tp_linkccoco 2005-05-30 10:31:45
我的代码是:

COleVariant VOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
_Application objApp;
Workbooks objBooks;
_Workbook objBook;
Worksheets objSheets;
_Worksheet objSheet;
Range objRange;
//创建Excel对象
objApp.CreateDispatch("Excel.Application");
objBooks = objApp.GetWorkbooks();
//打开指定的Excel文件
objBook.AttachDispatch(objBooks.Add(_variant_t("c:\\Report1.xls")));
objSheets = objBook.GetSheets();
//定义一个sheet为对象
objSheet = objSheets.GetItem((_variant_t)(short(1)));
objRange.AttachDispatch(objSheet.GetCells(),true);
//取得结果集中记录的个数,列数
int ss,nn;
double dTotal;
dTotal = 0;
CString cc;

//得到结果集中记录个数
nn = m_ListCtrl.GetItemCount();
ss = 5;
for(int i=0;i<nn;i++)
{
//设定数据所在行
for(int j = 0 ;j < ss; j++)
{
cc = m_ListCtrl.GetItemText(i,j);
if(j == 5)
dTotal = dTotal + atoi(cc);
objRange.SetItem(_variant_t((long)(i+2)),_variant_t((long)(j+1)),_variant_t(cc));
}
}
objApp.SetVisible(true);
//释放句柄
objRange.ReleaseDispatch();
objSheet.ReleaseDispatch();
objSheets.ReleaseDispatch();
objBook.ReleaseDispatch();
objBooks.ReleaseDispatch();
objApp.ReleaseDispatch();
return;

操作完EXcel后,不会自动保存,怎么办?
还有,如何追加到原来的Excel里面?
...全文
223 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tp_linkccoco 2005-05-31
  • 打赏
  • 举报
回复
怎么实现打印预览,是调用 objBook.PrintPreview(covTrue);吗?

怎么实现打印功能,是调用 objBook.PrintOut(covOptional,covOptional,COleVariant(long(1)),covTrue,covOptional,covOptional,covOptional,covOptional);?

怎么使用try ....catch ....语句,使得找不到打印机时,回想word那样弹出相应的提示?
tp_linkccoco 2005-05-30
  • 打赏
  • 举报
回复
To:humourHM(小鬼):谢谢
可不可以追加保存,就是不覆盖原来得文件,文件的Append功能。


我用这段代码打印对吗?总是死机(没有打印机):
void CExcelTestView::PrintExcel()
{

COleVariant VOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
COleVariant covTrue((short)TRUE),covFalse((short)FALSE);
_Application objApp;
Workbooks objBooks;
_Workbook objBook;
Worksheets objSheets;
_Worksheet objSheet;
Range objRange;
//创建Excel对象
objApp.CreateDispatch("Excel.Application");
objBooks = objApp.GetWorkbooks();
//打开指定的Excel文件
objBook.AttachDispatch(objBooks.Add(_variant_t("c:\\Report1.xls")));
objSheets = objBook.GetSheets();
//定义一个sheet为对象
objSheet = objSheets.GetItem((_variant_t)(short(1)));
objRange.AttachDispatch(objSheet.GetCells(),true);
//取得结果集中记录的个数,列数
int ss,nn;
double dTotal;
dTotal = 0;
CString cc;

//得到结果集中记录个数
nn = m_ListCtrl.GetItemCount();
//得到结果集中记录列数
ss = m_ListCtrl.GetHeaderCtrl()->GetItemCount();
for(int i=0;i<nn;i++)
{
//设定数据所在行
for(int j = 0 ;j < ss; j++)
{
cc = m_ListCtrl.GetItemText(i,j);
if(j == 5)
dTotal = dTotal + atoi(cc);
objRange.SetItem(_variant_t((long)(i+2)),_variant_t((long)(j+1)),_variant_t(cc));
}
}
objApp.SetVisible(false);
//try{
objBook.PrintPreview(covTrue);
//objBook.PrintOut(covOptional,covOptional,COleVariant(long(1)),covTrue,covOptional,covOptional,covOptional,covOptional);

//}catch(Exception E)
//{
//AfxMessageBox("");
//}
//释放句柄
objRange.ReleaseDispatch();
objSheet.ReleaseDispatch();
objSheets.ReleaseDispatch();
objBook.ReleaseDispatch();
objBooks.ReleaseDispatch();
objApp.ReleaseDispatch();
return;
}
打印异常的类型是什么? Exception的类别?
xiaolingtongsw 2005-05-30
  • 打赏
  • 举报
回复
可以加打印功能吧。
humourHM 2005-05-30
  • 打赏
  • 举报
回复
用下面的函数就可以了
objBook.SaveCopyAs(COleVariant(FileNAME));
tp_linkccoco 2005-05-30
  • 打赏
  • 举报
回复
来人啊!!!!!

16,471

社区成员

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

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

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