_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);
}
}
}