当读完一个EXCEL单元格的内容后,要想继续读其它单元格的内容为什么必须要再次重新读一次整个EXCEL表?,否则,第二条读语句读到的内容和上一条读语句读到的内容完整一样,好象是不起作用似的。我测试过,肯定是这个效果的。这是为什么?我能不能只读一次EXCEL表(sheet.getcells()),然后可以访问任意的单元格内容?range.AttachDispatch(sheet.GetCells());读一次EXCEL表。
range.AttachDispatch((range.GetItem(_variant_t((long)2),_variant_t((long)3))).pdispVal);
COleVariant vResult =range.GetValue2();
int cc=int(vResult.dblVal);
range.AttachDispatch(sheet.GetCells());必须要重读一次EXCEL表。
range.AttachDispatch((range.GetItem(_variant_t((long)1),_variant_t((long)1))).pdispVal);
vResult =range.GetValue2();
int dd=int(vResult.dblVal);
range.AttachDispatch((range.GetItem(_variant_t((long)2),_variant_t((long)3))).pdispVal);
COleVariant vResult =range.GetValue2();
int cc=int(vResult.dblVal);
range.AttachDispatch(sheet.GetCells());必须要重读一次EXCEL表。
range.AttachDispatch((range.GetItem(_variant_t((long)1),_variant_t((long)1))).pdispVal);
vResult =range.GetValue2();
int dd=int(vResult.dblVal);
解决方案 »
- VS2008 Add Class报错:File xxxx.h is not in project
- 如何获得Image类加载后图像的像素值?
- 如何获得硬盘的序号
- 求pcshare的通讯原理
- 帮忙看下代码,服务器端关闭后使用Socket还可连到服务器?
- 谁有8位图像的缩小图算法代码,100分伺候。
- VC调试控制台程序时如何设置命令行的参数?
- 请问如何制作属性页的程序
- 用CFile和CStdioFile类的方法读取数据文件时,文件一大,就出错,什么原因?
- 如何捕获鼠标指针
- =============关于向屏幕输出文本的问题.(waiting...)
- 一个关于用Mutex来限制客户端数量的bug,估计大家都有....
Range a;
a.AttachDispatch((range.GetItem(_variant_t((long)2),_variant_t((long)3))).pdispVal);
COleVariant vResult =a.GetValue2();
int cc=int(vResult.dblVal);
//range.AttachDispatch(sheet.GetCells());必须要重读一次EXCEL表。
Range b;
b.AttachDispatch((range.GetItem(_variant_t((long)1),_variant_t((long)1))).pdispVal);
vResult =b.GetValue2();
int dd=int(vResult.dblVal);
按楼上高手的指点:我改了一下代码:
range.AttachDispatch(sheet.GetCells());
Range c;
c.AttachDispatch((range.GetItem(_variant_t((long)2),_variant_t((long)3))).pdispVal);
COleVariant vResult =c.GetValue2();
int cc=int(vResult.dblVal);c.AttachDispatch((range.GetItem(_variant_t((long)1),_variant_t((long)1))).pdispVal);
vResult =c.GetValue2();
int dd=int(vResult.dblVal); 这次就确实成功了,得到了我的预期结果。能请教一下,这个是为什么吗?这次只不过是用新的Range 对象C,间接访问原始的Range 对象"range" . 再有,我之前给出的代码,如果调整一下顺序也能得到预期结果:
range.AttachDispatch(sheet.GetCells());读一次EXCEL表。
range.AttachDispatch((range.GetItem(_variant_t((long)1),_variant_t((long)1))).pdispVal);
COleVariant vResult =range.GetValue2();
int cc=int(vResult.dblVal);
//range.AttachDispatch(sheet.GetCells());没有必要再读一次EXCEL表了。
range.AttachDispatch((range.GetItem(_variant_t((long)2),_variant_t((long)3))).pdispVal);
vResult =range.GetValue2();
int dd=int(vResult.dblVal); (好象是,只能先访问小地址单元格,再访问大地址单元格才可以。晕!)
会把以前的内容(准确一点应该是释放了指向all cells的接口指针,再指向sub cell),如同 i = i + 1;至于为什么换一下顺序就好,没清楚,我对Excel的Automation不熟。