mfc excel 操作

xiaoxiao2021-02-28  82

_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); } } }
转载请注明原文地址: https://www.6miu.com/read-77337.html

最新回复(0)