设为首页 加入收藏

TOP

使用odbc读写excel类: (2) 源文件 (五)
2014-11-23 23:11:43 来源: 作者: 【 】 浏览:11
Tags:使用 odbc 读写 excel 源文件
0 }
361 return &m_Cells[rowIndex][colIndex];
362}
363
364CODBCExcelCell* CODBCExcelSheet::Cell(UINT rowIndex, const CString& strColName)
365{
366 if (rowIndex > 65535) return 0;
367
368 ASSERT(m_dwCols == m_ColHeaders.GetCount());
369 UINT colIndex;
370 for (colIndex = 0; colIndex < m_dwCols; ++colIndex)
371 {
372 if (m_ColHeaders[colIndex] == strColName)
373 {
374 break;
375 }
376 }
377 if (colIndex >= m_dwCols) return 0;
378 if (rowIndex >= m_dwRows)
379 {
380 m_dwRows += 1;
381 m_Cells.resize(m_dwRows);
382 for (DWORD dwRow = 0; dwRow < m_dwRows; ++dwRow)
383 {
384 m_Cells[dwRow].resize(m_dwCols);
385 for (DWORD dwCol = 0; dwCol < m_dwCols; ++dwCol)
386 {
387 m_Cells[dwRow][dwCol].SetParent(this);
388 }
389 }
390 }
391 return &m_Cells[rowIndex][colIndex];
392}
393
394int CODBCExcelSheet::GetColHeader(const CString& strColName) const
395{
396 for (int col = 0; col < m_dwCols; ++col)
397 {
398 if (m_ColHeaders[col] == strColName)
399 return col;
400 }
401 return -1;
402}
403
404int CODBCExcelSheet::GetRow(const CString& strColName, const CString& strCellText)
405{
406 int col = GetColHeader(strColName);
407 if (-1 == col) return -1;
408 for (int row = 0; row < m_dwRows; ++row)
409 {
410 if (m_Cells[row][col].m_strVal == strCellText)
411 return row;
412 }
413 return -1;
414}
415
416//////////////////////////////////////////////////////////////////////////
417CODBCExcelCell::CODBCExcelCell():
418m_Sheet(NULL)br /> 419{
420}
421
422void CODBCExcelCell::Set(const CDBVariant& dbVal)
423{
424 switch(dbVal.m_dwType)
425 {
426 case DBVT_NULL:
427 case DBVT_DATE:
428 case DBVT_BINARY:
429 m_strVal.Empty();
430 break;
431
432 case DBVT_BOOL:
433 if (dbVal.m_boolVal) m_strVal = _T("0");
434 else m_strVal = _T("1");
435 break;
436
437 case DBVT_UCHAR:
438 m_strVal.Format(_T("%c"), dbVal.m_chVal);
439 break;
440
441 case DBVT_SHORT:
442 m_strVal.Format(_T("%d"), dbVal.m_iVal);
443 break;
444
445 case DBVT_LONG:
446 m_strVal.Format(_T("%ld"), dbVal.m_lVal);
447 break;
448
449 case DBVT_SINGLE:
450 {
451 long lVal = (long)dbVal.m_fltVal;
452 if (dbVal.m_fltVal != (float)lVal)
453 m_strVal.Format(_T("%f"), dbVal.m_fltVal);
454 else
455 m_strVal.Format(_T("%ld"), lVal);
456 }
457 break;
458
459 case DBVT_DOUBLE:
460 {
461 long lVal = (long)dbVal.m_dblVal;
462 if (dbVal.m_dblVal != (double)lVal)
463 m_strVal.Format(_T("%f"), dbVal.m_dblVal);
464 else
465 m_strVal.Format(_T("%ld"), lVal);
466 }
467 break;
468
469 case DBVT_STRING:
470 m_strVal = *dbVal.m_pstring; m_strVal.Trim();
471 break;
472
473 case DBVT_ASTRING:
474 m_strVal = *dbVal.m_pstringA; m_strVal.Trim();
475 break;
476
477 case DBVT_WSTRING:
478 m_strVal = *dbVal.m_pstringW; m_strVal.Trim();
479 break;
480
481 default: ASSERT(FALSE); break;
482 }
首页 上一页 2 3 4 5 下一页 尾页 5/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇链表逆序的递归/非递归算法 下一篇使用odbc读写excel类: (1) 头文件

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: