📄 subject_33138.htm
字号:
<p>
序号:33138 发表者:谢亮 发表日期:2003-03-18 09:16:44
<br>主题:如何取得EXCEL文件的行列数?请高手指教。
<br>内容: 我在VC下通过EXCEL自带的EXCEL9。OLB对EXCEL进行读写操作,当我打开一个EXCEL文件时,不知道怎么获取它的行列信息,因为我要把里面的内容转存到二维数组中,需要进行内存分配,程序如下,望各位高手指点:<BR> _Application ExcelApp; <BR> Workbooks wbsMyBooks; //练习簿<BR> _Workbook wbMyBook; <BR> Worksheets wssMysheets; //工作表<BR> _Worksheet wsMysheet; <BR> Range rgMyRge; <BR> //创建Excel 2000服务器(启动Excel) <BR> <BR> if (!ExcelApp.CreateDispatch("Excel.Application",NULL)) <BR> { <BR> AfxMessageBox("创建Excel服务失败!"); <BR> exit(1); <BR> } <BR> //利用模板文件建立新文档 <BR> wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true); <BR> wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t("e:\\ExcelTest\\MyTemplate.xlt"))); <BR><BR> //得到Worksheets <BR> wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),true); <BR> <BR> //得到sheet1 <BR> wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet1")),true); <BR> <BR> //得到全部Cells<BR> rgMyRge.AttachDispatch(wsMysheet.GetCells(),true); <BR><BR> //得到所有的列 <BR> rgMyRge.AttachDispatch(wsMysheet.GetColumns(),true);
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:dongfanghong 回复日期:2003-03-18 15:31:18
<br>内容:<BR> rgMyRge=wsMysheet.GetUsedRange(); <BR> VARIANT ret;<BR> ret = rgMyRge.GetValue();<BR><BR> //Create the SAFEARRAY from the VARIANT ret.<BR> COleSafeArray sa(ret);<BR><BR> //Determine the array's dimensions.<BR> long lNumRows;<BR> long lNumCols;<BR> sa.GetUBound(1, &lNumRows);<BR> sa.GetUBound(2, &lNumCols);<BR><BR> //Display the elements in the SAFEARRAY.<BR> long index[2];<BR> VARIANT val;<BR> int r, c;<BR> TRACE("Contents of SafeArray\n");<BR> TRACE("=====================\n\t");<BR> for(c=1;c<=lNumCols;c++)<BR> {<BR> TRACE("\t\tCol %d", c);<BR> }<BR> TRACE("\n");<BR> for(r=1;r<=lNumRows;r++)<BR> {<BR> CStringArray arValue;<BR> TRACE("Row %d", r);<BR> for(c=1;c<=lNumCols;c++)<BR> {<BR> index[0]=r;<BR> index[1]=c;<BR> sa.GetElement(index, &val);<BR> CString sValue;<BR> switch(val.vt)<BR> {<BR> case VT_R8:<BR> {<BR> sValue.Format("%1.2f",val.dblVal); <BR> TRACE("\t\t%s",sValue);<BR> break;<BR> }<BR> case VT_BSTR:<BR> {<BR> sValue.Format("%s",(CString)val.bstrVal);<BR> TRACE("\t\t%s",sValue);<BR> break;<BR> }<BR> case VT_EMPTY:<BR> {<BR> TRACE("\t\t<empty>");<BR> break;<BR> }<BR> }<BR> arValue.Add(sValue); <BR> }<BR> //out put arValue;<BR> TRACE("\n");<BR> }
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:谢亮 回复日期:2003-03-19 10:22:30
<br>内容:大哥,你太帅了,能不能留下联系方式,如QQ或MSN,交个朋友怎么样?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -