excel-VS2008如何读取Excel表格某一特定工作表(sheet)的内容?

作者:用户 来源:互联网 浏览:385 次 时间:2016-05-31 13:33:54

excel数据visual studio 2008

excel-VS2008如何读取Excel表格某一特定工作表(sheet)的内容? - 摘要: VS2008如何读取Excel表格某一特定工作表(sheet)的内容?再编写一个VS2008读取Excel表格内参数的程序,目前可以实现读取Excel表格当前活跃工作表(例如sheet1)中的数据,但

问题描述

VS2008如何读取Excel表格某一特定工作表(sheet)的内容?

再编写一个VS2008读取Excel表格内参数的程序,目前可以实现读取Excel表格当前活跃工作表(例如sheet1)中的数据,但是如果我想读取另外一个非当前活跃工作表(比方是sheet2).换一种说法,就是当前活跃的工作表是sheet1,但是我不但需要读取sheet1里面的一些数据,还需要读一点sheet2里面的数据,我该用什么语句直接在程序里面把sheet1的相关数据读出来,然后紧接着可以读取sheet2里面的内容呢?,该怎么做呢?,各位大牛帮帮忙!!!感激不尽!!!

解决方案

1.你应该把所有文件改为相似的名字,如sheet1.xls, sheet2.xls
2.在新建表里使用引用。如在a1单元格里输入=,然后打开sheet1.xls,点击e9单元格,回车,则在新建单元格中显示sheet1.xls中e9单元格内容
3.复制a1单元格,粘贴至a2单元格,在地址栏中修改sheet1.xls为sheet2.xls,其余类似

解决方案二:

asp.net 操作Excel表数据导入到SQL Server数据库

解决方案三:

void CDemoDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码

CApplication0 app;

CWorkbooks0 books;

CWorkbook0 book;

CWorksheets0 sheets;

CWorksheet0 sheet;

CRange0 range;

CRange0 iCell;

LPDISPATCH lpDisp;

COleVariant vResult;

COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

if(!app.CreateDispatch(L"Excel.Application"))

{

AfxMessageBox(L"无法启动Excel服务器!");

return;

}

books.AttachDispatch(app.get_Workbooks());

lpDisp = books.Open(L"D:test.xls",covOptional, covOptional, covOptional, covOptional, covOptional,covOptional, covOptional, covOptional, covOptional, covOptional,covOptional, covOptional, covOptional,covOptional);

//得到Workbook

book.AttachDispatch(lpDisp);

//得到Worksheets

sheets.AttachDispatch(book.get_Worksheets());

//得到当前活跃sheet  
//如果有单元格正处于编辑状态中,此操作不能返回,会一直等待  
lpDisp=book.get_ActiveSheet();  
sheet.AttachDispatch(lpDisp);  
//读取第一个单元格的值  
range.AttachDispatch(sheet.get_Cells());  
range.AttachDispatch(range.get_Item (COleVariant((long)8),COleVariant((long)2)).pdispVal );  
/*COleVariant*/ vResult =range.get_Value2();  
CString str;  
if(vResult.vt == VT_BSTR) //字符串  
{  
str=vResult.bstrVal;  
}  
else if (vResult.vt==VT_R8) //8字节的数字  
{  
str.Format(L"%f",vResult.dblVal);  
}     
/*else if(vResult.vt==VT_DATE) //时间格式  
{  
SYSTEMTIME st;  
VariantTimeToSystemTime(&vResult.date, &st);  
}  
else if(vResult.vt==VT_EMPTY) //单元格空的  
{  
str="";  
}*/    
books.Close();   
app.Quit();             // 退出  
//释放对象    
range.ReleaseDispatch();  
sheet.ReleaseDispatch();  
sheets.ReleaseDispatch();  
book.ReleaseDispatch();  
books.ReleaseDispatch();  
app.ReleaseDispatch();  
OnOK();  
MessageBox(str);  

}
sheets.AttachDispatch(book.get_Worksheets());

这一句代码让我只能对当前活跃工作表进行读取,但后台的Excel,他两个sheet里都有数,我要从这两个sheet里把这个数都读出来,再对它们进行运算,再编一段读的操作没有关系,只要能够先打开你图中的sheet1,关闭之后再打开sheet2也行,有没有什么简单的语句,可以直接指定对某一个sheet进行操作啊?

【云栖快讯】诚邀你用自己的技术能力来用心回答每一个问题,通过回答传承技术知识、经验、心得,问答专家期待你加入!  详情请点击
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

现在注册,免费体验40+云产品,及域名优惠!

云服务器9.9元/月,大学必备

热点导航