VC怎的读取Excel文件中某个具体的单元格的内容
VC怎样读取Excel文件中某个具体的单元格的内容
如题,请问怎样读取Excel中某个具体的单元格的内容,用OLE的方式,不是一列或很多单元格。
------解决方案--------------------
给你个参考程序:
如题,请问怎样读取Excel中某个具体的单元格的内容,用OLE的方式,不是一列或很多单元格。
------解决方案--------------------
给你个参考程序:
//把识别结果和真值进行比对,结果写到EXCEL里面
void WriteToExcel(CString* data , int n)
{
/************* WriteToExcel *********************************
Function : 把识别结果和真值进行比对,结果写到EXCEL里面
Algorithms : 比对
Parameter : CString * data --> 识别结果数组
Parameter : int n --> 识别结果的个数
Return :
Date : 2012/09/01 22:37 **************************/
Range m_ExlRge;
_Worksheet m_ExlSheet;
Worksheets m_ExlSheets;
_Workbook m_ExlBook;
Workbooks m_ExlBooks;
_Application m_ExlApp;
CString realSN[1200]; // 真实编码
if(!AfxOleInit())///初始化COM库
{
AfxMessageBox(_T("初始化COM失败"));
}
if(!m_ExlApp.CreateDispatch(_T("Excel.Application"),NULL))
{
AfxMessageBox(_T("创建Excel服务失败!"));
return;
}
m_ExlApp.SetVisible(FALSE);
CString theAppPath;
//TOD,O:==标准字符设置
CString TempPath;
if (ceshi)
{
TempPath = _T("d:\\bz483z.xls");//EXCEL模板的路径
}
else
{
TempPath = _T("d:\\bz300.xls");//EXCEL模板的路径
}
m_ExlBooks.AttachDispatch(m_ExlApp.GetWorkbooks(),TRUE);
m_ExlBook.AttachDispatch(m_ExlBooks.Add((_variant_t)TempPath),TRUE);//加载EXCEL模板
m_ExlSheets.AttachDispatch(m_ExlBook.GetSheets(),TRUE);//加载Sheet页面
//修改Sheet页面的名称,第一页从1开始,不是0哦!后面涉及到编号的地方都是如此,要注意阿
m_ExlSheet.AttachDispatch(m_ExlSheets.GetItem(_variant_t((long)1)),TRUE);
//开始向各个单元格填入数据
m_ExlRge.AttachDispatch(m_ExlSheet.GetCells(),TRUE);//加载所有单元格
CString str;
VARIANT vMsg;
char cMsg[20];
for (int i = 0; i < 483 ; i++)
{
vMsg=m_ExlRge.GetItem(_variant_t((long)(i+1)) ,_variant_t((long)1));
_bstr_t bMsg=(_bstr_t)vMsg;
strcpy(cMsg , bMsg);
str=cMsg;
realSN[i]=str;
}
CString tem;
int blankN=0;
for(int i=0;i<n;i++)
{
tem=cmpStr(realSN[i] ,data[i]);
m_ExlRge.SetItem(_variant_t((long)(i+1)),_variant_t((long)1),_variant_t((LPCTSTR)realSN[i]));
m_ExlRge.SetItem(_variant_t((long)(i+1)),_variant_t((long)2),_variant_t((LPCTSTR)data[i]));
m_ExlRge.SetItem(_variant_t((long)(i+1)),_variant_t((long)3),_variant_t((LPCTSTR)tem));
if (tem != _T(""))
{
blankN++;
}
}
tem.Format(_T("张数为 : %d") ,blankN);
m_ExlRge.SetItem(_variant_t((long)(n+2)),_variant_t((long)3),_variant_t((LPCTSTR)tem));
SYSTEMTIME st;
GetLocalTime(&st);
CString path;
path.Format(_T("D:\\比对结果\\bidui%02d%02d%02d%02d.xls"),st.wMonth,st.wDay,st.wHour,st.wMinute);
//将编辑完成的内容保存为新文件,这里的文件名可以根据需要动态产生。