vc++60写一个从本地选择excel文件并且打开 读取到里面的数据
以下是一个示例代码,可以使用VC++ 6.0选择本地的Excel文件并读取其中的数据:
#include <afxwin.h>
#include <afxdisp.h>
void OpenExcelFile(CString filePath)
{
// 初始化COM库
CoInitialize(NULL);
// 创建Excel应用程序对象
_Application app;
if (!app.CreateDispatch("Excel.Application"))
{
AfxMessageBox("无法创建Excel应用程序对象");
return;
}
// 设置Excel应用程序是否可见
app.put_Visible(TRUE);
// 打开Excel文件
Workbooks workbooks;
_Workbook workbook;
workbooks = app.get_Workbooks();
if (!workbooks.Open(filePath, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing))
{
AfxMessageBox("无法打开Excel文件");
app.Quit();
return;
}
// 获取第一个工作表
Sheets sheets;
_Worksheet worksheet;
sheets = workbook.get_Sheets();
worksheet = sheets.get_Item(COleVariant((short)1));
// 读取数据
Range range;
range = worksheet.get_UsedRange();
long rowCount = range.get_Rows()->get_Count();
long columnCount = range.get_Columns()->get_Count();
CString strData;
for (long row = 1; row <= rowCount; row++)
{
for (long column = 1; column <= columnCount; column++)
{
COleVariant cellValue;
cellValue = range.get_Item(COleVariant(row), COleVariant(column))->get_Value2();
if (cellValue.vt == VT_BSTR)
{
strData += CString(cellValue.bstrVal) + "\t";
}
else
{
strData += "\t";
}
}
strData += "\n";
}
// 显示数据
AfxMessageBox(strData);
// 关闭Excel文件
workbook.Close(FALSE);
workbooks.Close();
// 退出Excel应用程序
app.Quit();
// 释放COM库
CoUninitialize();
}
// 对话框类
class CMyDialog : public CDialog
{
public:
CMyDialog() : CDialog(IDD_MYDIALOG) {}
protected:
virtual void DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
afx_msg void OnButtonOpenExcel()
{
CFileDialog fileDialog(TRUE, _T("Excel Files (*.xls;*.xlsx)|*.xls;*.xlsx||"), NULL, OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST, _T("Excel Files (*.xls;*.xlsx)|*.xls;*.xlsx||"), this);
if (fileDialog.DoModal() == IDOK)
{
CString filePath = fileDialog.GetPathName();
OpenExcelFile(filePath);
}
}
DECLARE_MESSAGE_MAP()
};
BEGIN_MESSAGE_MAP(CMyDialog, CDialog)
ON_BN_CLICKED(IDC_BUTTON_OPEN_EXCEL, OnButtonOpenExcel)
END_MESSAGE_MAP()
// 应用程序类
class CMyApp : public CWinApp
{
public:
virtual BOOL InitInstance()
{
CMyDialog dlg;
m_pMainWnd = &dlg;
dlg.DoModal();
return FALSE;
}
};
// 入口函数
CMyApp myApp;
以上代码包含一个对话框类 CMyDialog 和应用程序类 CMyApp,对话框中包含一个“打开Excel文件”按钮,点击按钮会弹出文件选择对话框让用户选择Excel文件,然后调用 OpenExcelFile 函数打开并读取Excel文件中的数据,并显示在消息框中。请注意,该代码使用了一些MFC和COM库,确保已经正确引入这些库文件。
此外,为了能够在VC++ 6.0中使用Excel COM对象,需要在项目设置中添加 #import 指令,如下所示:
#import "C:\Program Files\Microsoft Office\Office\MSO9.DLL" \
rename("DocumentProperties", "DocumentPropertiesXL") \
rename("RGB", "RBGXL") \
exclude("IFont", "IPicture") no_dual_interfaces
#import "C:\Program Files\Microsoft Office\Office\EXCEL.EXE" \
rename("DialogBox", "DialogBoxXL") \
rename("RGB", "RBGXL") \
rename("CopyFile", "CopyFileXL") \
rename("ReplaceText", "ReplaceTextXL") \
rename("FindText", "FindTextXL") \
exclude("IFont", "IPicture") no_dual_interfaces
请根据实际安装路径修改上述 #import 指令中的文件路径
原文地址: http://www.cveoy.top/t/topic/h26R 著作权归作者所有。请勿转载和采集!