mfc excel 操作

来源:互联网 发布:淘宝到家在哪里 编辑:程序博客网 时间:2024/06/05 03:52

_Application app;//Excel 应用
Workbooks books; //工作簿集合
_Workbook book;  //一个工作簿
Worksheets sheets; //工作表集合
_Worksheet sheet; //一个工作表
Range range;  //区域
Range oCurCell; //区域


CString strFileName1;


CFileDialog dlg(TRUE, _T("xls"), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("Excel 工作簿(*.xlsx)|*.xlsx|Excel 97-2003 工作簿(*.xls)|*.xls|"), NULL);
dlg.m_ofn.lpstrTitle = L"打开Excel文件";
int nRetVal = dlg.DoModal();
if (nRetVal == IDOK)
{
if (!app.CreateDispatch(_T("Excel.Application"), NULL))
{
AfxMessageBox(L"create Excel server failed.");
return;
}


app.SetVisible(FALSE);
books.AttachDispatch(app.GetWorkbooks(), TRUE);
LPDISPATCH lpDisp = NULL;
COleVariant covTrue((short)TRUE);
COleVariant covFalse((short)FALSE);
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);


CString sFilePath = dlg.GetPathName();
strFileName1 = sFilePath;


lpDisp = books.Open(sFilePath,
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing));


book.AttachDispatch(lpDisp, TRUE);
sheet.AttachDispatch(book.GetActiveSheet(), TRUE);
range.AttachDispatch(sheet.GetUsedRange(), TRUE);


long lgUsedRowNum = 0;
range.AttachDispatch(range.GetRows(), TRUE);
lgUsedRowNum = range.GetCount();


long lgUsedColumnNum = 0;
range.AttachDispatch(range.GetColumns(), TRUE);
lgUsedColumnNum = range.GetCount();


CString strSheetName = sheet.GetName();


range.AttachDispatch(sheet.GetCells(), TRUE);


CStringArray* arrayStr;
arrayStr = new CStringArray[lgUsedRowNum];


for (int i = 0; i < lgUsedRowNum; ++i)
{
for (int j = 1; j < lgUsedColumnNum; ++j)
{
oCurCell.AttachDispatch(range.GetItem(COleVariant((long)(i + 1)), COleVariant((long)j)).pdispVal, TRUE);
VARIANT varItemName = oCurCell.GetText();


CString strItemName;
strItemName = varItemName.bstrVal;


VARIANT varMerge = oCurCell.GetMergeCells();


CString posInfo1[] = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T"};
CString posInfo2[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20" };


if (varMerge.boolVal == -1)
{
AfxMessageBox(L"当前是合并单元格");
}


arrayStr[i].Add(strItemName);
}
}








}



原创粉丝点击