用C++怎么从excel表格中读取数据并进行简单的计算

2024-11-08 17:09:39
推荐回答(2个)
回答1:

不知这样的效果如何?文件在附件,代码片段在下方:

LPXLOPER Add(LPXLOPER x1,LPXLOPER x2)
{
 if (x1->xltype==xltypeErr)
 {
  return x1;
 }
 if (x2->xltype==xltypeErr)
 {
  return x2;
 }
 static XLOPER xlRet={0};
 double d1=0,d2=0;
 if ((x1->xltype&xltypeNum)==xltypeNum)
 {
  d1=x1->val.num;
 }else if ((x1->xltype&xltypeInt)==xltypeInt)
 {
  d1=x1->val.w;
 }else if ((x1->xltype&xltypeSRef)==xltypeSRef)
 {
  if (GetNumFromCell(x1,d1)==false)
  {
   xlRet.val.err=xlerrValue;
   xlRet.xltype=xltypeErr;
   return (LPXLOPER)&xlRet;
  }
 }else
 {
  xlRet.val.err=xlerrValue;
  xlRet.xltype=xltypeErr;
  return (LPXLOPER)&xlRet;
 }
 if ((x2->xltype&xltypeNum)==xltypeNum)
 {
  d2=x2->val.num;
 }else if ((x2->xltype&xltypeInt)==xltypeInt)
 {
  d2=x2->val.w;
 }else if ((x2->xltype&xltypeSRef)==xltypeSRef)
 {
  if (GetNumFromCell(x2,d2)==false)
  {
   xlRet.val.err=xlerrValue;
   xlRet.xltype=xltypeErr;
   return (LPXLOPER)&xlRet;
  }
 }else
 {
  xlRet.val.err=xlerrValue;
  xlRet.xltype=xltypeErr;
  return (LPXLOPER)&xlRet;
 }
 xlRet.xltype=xltypeNum;
 xlRet.val.num=d1+d2;
 return (LPXLOPER)&xlRet;
}
bool GetNumFromCell(LPXLOPER lpXloper,double & dValue)
{
 XLOPER x_Tmp={0};
 if ((lpXloper->xltype & xltypeSRef)==xltypeSRef)
 {
  if (xlretUncalced == Excel(xlCoerce, &x_Tmp, 2, lpXloper, TempInt(xltypeNum)))
  {
   return false;
  }
  if (x_Tmp.xltype==xltypeErr)
  {
   return false;
  }
  dValue=x_Tmp.val.num;
 }else
 {
  return false;
 }
 return true;
}


回答2:

t对tuple进行处理之后,通常要将数据缓存到redis,memcached等内存数据库中,对于数据量小的,可以缓存到内存中,但是对于大量持久化的数据,更多时候需要存储到分布式存储系统中,这里我选择HBase用于存储结果。 参照官方文档,storm提供storm-h...