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