.cpp鏂囦歡錛?/div>
聽
ExcelFile::ExcelFile()
{
}
ExcelFile::~ExcelFile()
{
聽m_Rge.ReleaseDispatch();
聽m_sheet.ReleaseDispatch();
聽m_sheets.ReleaseDispatch();
聽m_Book.ReleaseDispatch();
聽m_Books.ReleaseDispatch();
}
void ExcelFile::InitExcel()
{
聽//鍒涘緩Excel 2000鏈嶅姟鍣?鍚姩Excel)
聽if (!m_ExcelApp.CreateDispatch("Excel.Application",NULL))
聽{
聽聽AfxMessageBox("鍒涘緩Excel鏈嶅姟澶辮觸!");
聽聽exit(1);
聽}
}
void ExcelFile::ReleaseExcel()
{
聽m_ExcelApp.ReleaseDispatch();
}
bool ExcelFile::Open(CString FileName)
{//鎵撳紑excel鏂囦歡
聽//鍒╃敤妯℃澘鏂囦歡寤虹珛鏂版枃妗?
聽m_Books.AttachDispatch(m_ExcelApp.GetWorkbooks(),true);
聽LPDISPATCH lpDis = NULL;
聽lpDis = m_Books.Add(_variant_t(FileName)); // 濡備綍鍒ゆ柇鏂囦歡鏄惁鎵撳紑錛?br />聽if (lpDis)
聽{
聽聽m_Book.AttachDispatch(lpDis);
聽聽//寰楀埌Worksheets
聽聽m_sheets.AttachDispatch(m_Book.GetWorksheets(),true);
聽聽return true;
聽}
聽return false;
}
int ExcelFile::GetSheetCount()
{
聽return m_sheets.GetCount();
}
CString ExcelFile::GetSheetName(int iIndex)
{
聽_Worksheet sheet;
聽sheet.AttachDispatch(m_sheets.GetItem(_variant_t((long)iIndex)),true);
聽CString name = sheet.GetName();
聽sheet.ReleaseDispatch();
聽return name;
}
bool ExcelFile::LoadSheet(int iIndex)
{
聽LPDISPATCH lpDis = NULL;
聽m_Rge.ReleaseDispatch();
聽m_sheet.ReleaseDispatch();
聽lpDis = m_sheets.GetItem(_variant_t((long)iIndex));
聽if (lpDis)
聽{
聽聽m_sheet.AttachDispatch(lpDis,true);
聽聽m_Rge.AttachDispatch(m_sheet.GetCells(), true);
聽聽return true;
聽}
聽
聽return false;
}
int ExcelFile::GetColumnCount()
{
聽Range range;
聽Range usedRange;
聽usedRange.AttachDispatch(m_sheet.GetUsedRange(), true);
聽range.AttachDispatch(usedRange.GetColumns(), true);
聽int count = range.GetCount();
聽usedRange.ReleaseDispatch();
聽range.ReleaseDispatch();
聽return count;
}
int ExcelFile::GetRowCount()
{
聽Range range;
聽Range usedRange;
聽usedRange.AttachDispatch(m_sheet.GetUsedRange(), true);
聽range.AttachDispatch(usedRange.GetRows(), true);
聽int count = range.GetCount();
聽usedRange.ReleaseDispatch();
聽range.ReleaseDispatch();
聽return count;
}
CString ExcelFile::GetCell(int iRow, int iColumn)
{
聽Range range;
聽range.AttachDispatch(m_Rge.GetItem (COleVariant((long)iRow),COleVariant((long)iColumn)).pdispVal, true);
聽COleVariant vResult =range.GetValue2();
聽CString str;
聽if(vResult.vt == VT_BSTR)聽聽聽聽聽聽 //瀛楃涓?br />聽{
聽聽str=vResult.bstrVal;
聽}
聽else if (vResult.vt==VT_INT)
聽{
聽聽str.Format("%d",vResult.pintVal);
聽}
聽else if (vResult.vt==VT_R8)聽聽聽聽 //8瀛楄妭鐨勬暟瀛?
聽{
聽聽str.Format("%f",vResult.dblVal);
聽聽//str.Format("%.0f",vResult.dblVal);
聽聽//str.Format("%1f",vResult.fltVal);
聽}
聽else if(vResult.vt==VT_DATE)聽聽聽 //鏃墮棿鏍煎紡
聽{
聽聽SYSTEMTIME st;
聽聽VariantTimeToSystemTime(vResult.date, &st);
聽}
聽else if(vResult.vt==VT_EMPTY)聽聽 //鍗曞厓鏍肩┖鐨?br />聽{
聽聽str="(NULL)";
聽}聽
聽
聽range.ReleaseDispatch();
聽
聽return str;
}
int ExcelFile::GetCellInt(int iRow, int iColumn)
{
聽Range range;
聽range.AttachDispatch(m_Rge.GetItem (COleVariant((long)iRow),COleVariant((long)iColumn)).pdispVal, true);
聽COleVariant vResult =range.GetValue2();
聽int num;
聽num = (int)vResult.date;
聽
聽range.ReleaseDispatch();
聽
聽return num;
}
void ExcelFile::ShowInExcel(bool bShow)
{
聽m_ExcelApp.SetVisible(bShow);
}