• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > LeeZi兄请进,从Excel中读取数据时意外出错的问题

LeeZi兄请进,从Excel中读取数据时意外出错的问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了leezi,leezi莉兹,leezi口红,light leezi,leezi莉兹口红等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: LeeZi兄请进,从Excel中读取数据时意外出错的问题
描述:

现在EXCEL会退出了,但我在从EXCEL读取记录的时候,发现如果EXCEL行比较少,比如两三行,读取成功,如果行数多了,比如10行,则会在读取时发生错误,错误如下:1017 dbgheap.c _BLOCK_TYPE_IS_VALID(pHead->nBlockuse),不知道什么原因,大侠们指点指点。
struct ItemData
{
LPTSTR* arrStrItem;
};
下面代码中的pid是我在class CCallLogAddDlg中定义的ItemData *pid对象。
void CCallLogAddDlg::OnButtonImport() 
{
// TODO: Add your control notification handler code here
static char BASED_CODE szFilter[] = 
"Excel Files (*.xls)|*.xls|All Files (*.*)|*.*||";
CFileDialog dlg(true,"xls",NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter,this);
;
if ( dlg.DoModal() == IDOK )
{
_Application ExcelApp;
Workbooks    workBooks;
_Workbook  workBook;
Worksheets   workSheets;
_Worksheet   workSheet;
Range  range;
COleException *e = new COleException;
try
{
if ( !ExcelApp.CreateDispatch("Excel.Application",e) )
{
// AfxMessageBox("创建Excel服务失败!"); 
// exit(1);
throw e;
}
}
catch ( COleDispatchException *e)
{
CString cStr;
      if (!e->m_strSource.IsEmpty())
         cStr = e->m_strSource + " - ";
      if (!e->m_strDescription.IsEmpty())
         cStr += e->m_strDescription;
      else
         cStr += "unknown error";
      AfxMessageBox(cStr, MB_OK, 
         (e->m_strHelpFile.IsEmpty())? 0:e->m_dwHelpContext);
      e->Delete();
   }
  catch (CException *e) 
   {
      TRACE("%s(%d): OLE Execption caught: SCODE = %x", 
         __FILE__, __LINE__, COleException::Process(e));
      e->Delete();
   }
workBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true);
workBook.AttachDispatch( workBooks.Add( 
_variant_t(dlg.GetPathName())));
workSheets.AttachDispatch( workBook.GetWorksheets());
workSheet.AttachDispatch( workSheets.GetItem(
_variant_t("sheet1")),true);
range.AttachDispatch( workSheet.GetCells(),true);
ExcelApp.SetVisible(true);
_variant_t vData;
vData = range.GetItem(_variant_t(long(1)),
_variant_t(long(1)));
COleVariant temp;
int i = 2;
CString strVal;
CString str1;
char cCol;
for ( ; ; )
{
Range r;
cCol = 'A';
pid->arrStrItem = new LPTSTR[7];
str1.Format("A%d",i);
r = workSheet.GetRange(COleVariant(str1),vtMissing);
temp = r.GetValue();
strVal = (LPCTSTR)_bstr_t(temp);
if ( strVal == "" )
break;
pid->arrStrItem[0] = new char(strVal.GetLength()+1);
strcpy(pid->arrStrItem[0], strVal);
m_lstCallLogs.InsertItem(i-2,pid->arrStrItem[0]);
LV_ITEM lvitem;
lvitem.iItem = i-2;
lvitem.mask = LVIF_TEXT;
for ( int iCol = 1; iCol <= 6; iCol++ )
{
lvitem.iSubItem = iCol;
cCol += 1;
str1.Format("%c%d",cCol,i);
r = workSheet.GetRange(COleVariant(str1),vtMissing);
temp = r.GetValue();
if ( temp.vt != VT_BSTR )
{
HRESULT hr=::VariantChangeType(&temp,&temp,
VARIANT_NOUSEROVERRIDE|VARIANT_LOCALBOOL,VT_BSTR);
}
strVal=(LPCTSTR)_bstr_t(temp);
if ( strVal == "")
break;
pid->arrStrItem[iCol] = new char(strVal.GetLength() + 1);
strcpy(pid->arrStrItem[iCol], strVal);
lvitem.pszText = pid->arrStrItem[iCol];
m_lstCallLogs.SetItem(&lvitem);
}
// m_lstCallLogs.SetItemData
// ( i-2,reinterpret_cast<DWORD>(pid) );
i++;
}
// workBook.Save();
/////////////////////////////////////////修改如下
workBook.Close(COleVariant((short)false),vtMissing,vtMissing);
ExcelApp.Quit();
range.ReleaseDispatch();
workSheet.ReleaseDispatch();
workSheets.ReleaseDispatch();
workBook.ReleaseDispatch();
workBooks.ReleaseDispatch();
ExcelApp.ReleaseDispatch();
}
}


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • LeeZi兄请进,从Excel中读取数据时意外出错的问题

相关文章

  • 2017-06-05 请教如何使用vc控制word画出列的宽度不同的表格
  • 2017-06-04 vb里做的activex。vc下怎么调用
  • 2017-06-05 如何实现工作者线程自动退出(MFC)
  • 2017-06-04 请用VisualC++net编写
  • 2017-06-04 怪问题!用MFC做出来的ocx,在自己的机上能注册,但在别的机上就不能注册!
  • 2017-06-05 跪求:我想做一个输入法,要调用微软拼音的一些接口,有谁知道微软拼音的接口?
  • 2017-06-05 如何判断当前桌面是default桌面还是winlogon桌面?
  • 2017-06-05 如何显示DLL中对话框资源
  • 2017-06-04 如何用ATL得到IDE代码编辑界面函数所在的行号
  • 2017-06-04 有关ActiveX控件开发的问题

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 学了com这么久,还是不能理解这几句是什么意思。
    • [十万火急]200分求Excel嵌入单文档视图后菜单隐藏的解决方案
    • 串口通讯,连续发送10个AT指令,CPU占用率高达100%
    • 做一个类似MFC的CListCtrl控件的组件,如何画
    • 想问一个DLL封装类的问题!大家请帮帮忙啊!
    • 我用c#调用vc编写的dll,出错!!!求助!!!
    • 关于使用directshow进行视频通讯
    • 关于AfxBeginThread出错的问题
    • 请问如何从外界向ActiveX控件里写入值呢?
    • VC60编写的ActiveX控件,怎样让自定义的属性持久化,以便在网页上传递参数给该属性?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有