怎样保存动态数据到Excel文件(在线等) 我的数据都在一个进程里,而且是变化的,我怎样才能把这些数据保存到Excel文件?现在我能保存静态的数据,但是动态的还不行 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你是用什么方法操作的EXCEL?? 我在程序所在的夹子里建立了一个template模板,然后在程序中以这个模板建ReceiveData.excel文件 我把我的程序贴出来吧:CNetWatcherViewerDoc::CNetWatcherViewerDoc(){ // TODO: add one-time construction code here //创建Excel 2000服务器(启动Excel) if (!ExcelApp.CreateDispatch("Excel.Application",NULL)) { AfxMessageBox("创建Excel服务失败!"); exit(1); } ExcelApp.SetVisible(false); //利用模板文件建立新文档 char path[MAX_PATH]; GetCurrentDirectory(MAX_PATH,path); CString strPath = path; strPath += "\\template"; wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true); wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t(strPath))); //得到Worksheets wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),true); //得到sheet1 wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet1")),true); //添加模板个数 for(i=0;i<4;i++){ wsMysheet.Copy(vtMissing,_variant_t(wsMysheet)); } CString str1; wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet1")),true); str1 = "通道1"; wsMysheet.SetName(str1); for(i=0;i<wssMysheets.GetCount()-1;i++){ wsMysheet = wsMysheet.GetNext(); str1.Format("通道%d",i+2); wsMysheet.SetName(str1); } wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("通道1")),true); //得到全部Cells,此时,rgMyRge是cells的集合 rgMyRge.AttachDispatch(wsMysheet.GetCells(),true); m_pRecvThread=AfxBeginThread(Recvdata,this); if(m_pRecvThread==NULL){ AfxMessageBox("Listening Socket Error"); } for (i=0;i<10;i++) { str.Format("%d",precvbuf+i); rgMyRge.SetItem(_variant_t((long)(i+2)),_variant_t((long)1),_variant_t(str)); } strPath = path; strPath += "\\ReceiveData.xls"; wsMysheet.SaveAs(strPath,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing); wbsMyBooks.Close(); rgMyRge.ReleaseDispatch(); wsMysheet.ReleaseDispatch(); wssMysheets.ReleaseDispatch(); wbMyBook.ReleaseDispatch(); wbsMyBooks.ReleaseDispatch(); ExcelApp.ReleaseDispatch(); }precvbuf+i这个值的变化在后面的一个进程里,而我想这个值一变化就能输出到Excel中,但是现在是输出完一些数(我怀疑是上次运行的值)Excel就关闭了,所以怎么才能把precvbuf+i这个值输出来呢?谢谢大家 加我qq 348728909 或者邮箱[email protected]我做过这个。而且从你的问题看出我们做的好多都是类似的功能 菜鸟发问:MDI中,CChildFrame::PreCreateWindow中更改子窗口为最大化为什么无效? MFC 关于COM组件 怎么样改变一些控件边框的颜色啊 如何获取一个activex控件的属性和方法,我只知道控件的progid! 一个困扰我好久的问题 计算器程序问题 VC内嵌word,为什么没法添加图片? PDF文档的全文搜索 如何编图标程序 error C2601: 'OnCreate' : local function definitions are illegal 平移绘制的图像
CNetWatcherViewerDoc::CNetWatcherViewerDoc()
{
// TODO: add one-time construction code here
//创建Excel 2000服务器(启动Excel)
if (!ExcelApp.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox("创建Excel服务失败!");
exit(1);
}
ExcelApp.SetVisible(false);
//利用模板文件建立新文档
char path[MAX_PATH];
GetCurrentDirectory(MAX_PATH,path);
CString strPath = path;
strPath += "\\template";
wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true);
wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t(strPath)));
//得到Worksheets
wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),true);
//得到sheet1
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet1")),true);
//添加模板个数
for(i=0;i<4;i++){
wsMysheet.Copy(vtMissing,_variant_t(wsMysheet));
}
CString str1;
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet1")),true);
str1 = "通道1";
wsMysheet.SetName(str1);
for(i=0;i<wssMysheets.GetCount()-1;i++){
wsMysheet = wsMysheet.GetNext();
str1.Format("通道%d",i+2);
wsMysheet.SetName(str1);
}
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("通道1")),true);
//得到全部Cells,此时,rgMyRge是cells的集合
rgMyRge.AttachDispatch(wsMysheet.GetCells(),true);
m_pRecvThread=AfxBeginThread(Recvdata,this);
if(m_pRecvThread==NULL){
AfxMessageBox("Listening Socket Error");
} for (i=0;i<10;i++)
{
str.Format("%d",precvbuf+i);
rgMyRge.SetItem(_variant_t((long)(i+2)),_variant_t((long)1),_variant_t(str));
}
strPath = path;
strPath += "\\ReceiveData.xls";
wsMysheet.SaveAs(strPath,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing);
wbsMyBooks.Close(); rgMyRge.ReleaseDispatch();
wsMysheet.ReleaseDispatch();
wssMysheets.ReleaseDispatch();
wbMyBook.ReleaseDispatch();
wbsMyBooks.ReleaseDispatch();
ExcelApp.ReleaseDispatch();
}
precvbuf+i这个值的变化在后面的一个进程里,而我想这个值一变化就能输出到Excel中,但是现在是输出完一些数(我怀疑是上次运行的值)Excel就关闭了,所以怎么才能把precvbuf+i这个值输出来呢?谢谢大家