C++操作EXCEL-功能包含启动,打开,写入,保存和关闭

1.新建一个MFC工程
在这里插入图片描述
2.打开类向导进入类向导对话框
在这里插入图片描述
3.点击“添加类”的下拉菜单,选择“类型库中的MFC类‘,进入类型库添加类向导
在这里插入图片描述
4.在类型库添加类向导,选择文件,在位置中选择Excel.EXE所在的路径,向导会自动显示它的接口在这里插入图片描述
5.从接口处选择对应的接口,生成类文件
在这里插入图片描述
6.将生成的.h文件中#import “F:\软件安装位置\office2013\Office15\EXCEL.EXE” no_namespace替换成

//为MSO.DLL文件所在路径
#import "C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\OFFICE15\\MSO.DLL" \
rename("RGB", "MSORGB") \
rename("DocumentProperties", "MSODocumentProperties")
using namespace Office;

//为VBE6EXT.OLB文件所在路径
#import "C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\VBA\\VBA6\\VBE6EXT.OLB"
using namespace VBIDE;

//为EXCEL.EXE文件所在路径
#import "F:\\软件安装位置\\office2013\\Office15\\EXCEL.EXE" \
rename("DialogBox", "ExcelDialogBox") \
rename("RGB", "ExcelRGB") \
rename("CopyFile", "ExcelCopyFile") \
rename("ReplaceText", "ExcelReplaceText") \
no_auto_exclude
using namespace Excel;

7.创建一个ExcelOpenDlg对话框,在其中创建五个按钮,分别为启动,打开文件,写入,读取,保存与退出
在这里插入图片描述
8.在ExcelOpenDlg.h文件中创建

CApplication ExcelApp;
CRange Range;
CWorkbook book;
CWorkbooks books;
CWorksheet sheet;
CWorksheets sheets;

9.双击启动按钮,启动按钮代码

void CExcleOpenDlg::OnBnClickedStart()
{
	LPDISPATCH lpDisp = NULL;

	//创建Excel 服务器(启动Excel)
	if (!ExcelApp.CreateDispatch(_T("Excel.Application"), NULL))
	{
		AfxMessageBox(_T("启动Excel服务器失败!"));
		return;
	}

	/*判断当前Excel的版本*/
	CString strExcelVersion = ExcelApp.get_Version();//获取版本信息
	int iStart = 0;
	strExcelVersion = strExcelVersion.Tokenize(_T("."), iStart);
	if (_T("15") == strExcelVersion)
	{
		GetDlgItem(IDC_VERSION)->SetWindowText(_T("Excel2013"));
	}
	else
	{
		GetDlgItem(IDC_VERSION)->SetWindowText(_T("Excel其他版本"));
	}
	ExcelApp.put_Visible(TRUE);
	ExcelApp.put_UserControl(TRUE);
}

10.打开文件按钮代码

void CExcleOpenDlg::OnBnClickedOpenfile()
{
	LPDISPATCH lpDisp = NULL;
	/*得到工作簿容器*/
	books.AttachDispatch(ExcelApp.get_Workbooks());
	/*打开一个工作簿,如不存在,则新增一个工作簿*/
	CString strBookPath =_T("G:\\11.xlsx");//打开指定表格路径
	try
	{
		/*打开一个工作簿*/
		lpDisp = books.Open(strBookPath,
			vtMissing, vtMissing, vtMissing, vtMissing, vtMissing,
			vtMissing, vtMissing, vtMissing, vtMissing, vtMissing,
			vtMissing, vtMissing, vtMissing, vtMissing);
		book.AttachDispatch(lpDisp);
	}
	catch (...)
	{
		/*增加一个新的工作簿*/
		lpDisp = books.Add(vtMissing);
		book.AttachDispatch(lpDisp);
	}

	/*得到工作簿中的Sheet的容器*/
	sheets.AttachDispatch(book.get_Sheets());
	/*打开一个Sheet,如不存在,就新增一个Sheet*/
	CString strSheetName = _T("NewSheet");
	try
	{
		/*打开一个已有的Sheet*/
		lpDisp = sheets.get_Item(_variant_t(strSheetName));
		sheet.AttachDispatch(lpDisp);
	}
	catch (...)
	{
		/*创建一个新的Sheet*/
		lpDisp = sheets.Add(vtMissing, vtMissing, _variant_t((long)1), vtMissing);
		sheet.AttachDispatch(lpDisp);
		sheet.put_Name(strSheetName);
	}
}

11.写入按钮代码

void CExcleOpenDlg::OnBnClickedWrite()
{
	LPDISPATCH lpDisp;
	//选择需要写入的单元格
	lpDisp = sheet.get_Range(COleVariant(_T("A3")), COleVariant(_T("A3")));
	//将数据链接到单元格
	Range.AttachDispatch(lpDisp);
	//将数据写入对应的单元格
	Range.put_Value(vtMissing, COleVariant(_T("wo")));

}

12.读取按钮代码

void CExcleOpenDlg::OnBnClickedRead()
{
	//获得坐标为(A,1)的单元格
	Range = sheet.get_Range(COleVariant(_T("A1")), COleVariant(_T("A1")));
	//获得单元格的内容
	COleVariant rValue;
	rValue = COleVariant(Range.get_Value2());
	//转换成宽字符
	rValue.ChangeType(VT_BSTR);
	//转化格式并输出
	this->MessageBox(CString(rValue.bstrVal));
}

13.保存与关闭按钮代码

void CExcleOpenDlg::OnBnClickedSaveandclose()
{
	    //保存工作簿
		book.put_Saved(TRUE);
		//退出工作薄
		ExcelApp.Quit();
		books.ReleaseDispatch();//释放所有工作簿
		ExcelApp.ReleaseDispatch();//关闭EXCEL服务器		
}

demo链接:https://download.csdn.net/download/weixin_43842146/11694684

  • 10
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Python中,可以使用openpyxl库来读取和写入Excel文件。openpyxl是一个功能强大的第三方库,它允许我们以编程的方式读取和写入Excel文件。 要读取一个Excel文件,首先需要导入openpyxl库。然后使用load_workbook方法打开Excel文件,例如: ```python from openpyxl import load_workbook # 打开Excel文件 workbook = load_workbook('example.xlsx') # 选择要读取的工作表,可以通过索引或名称选择 sheet = workbook['Sheet1'] # 读取单元格的值 value = sheet['A1'].value ``` 要写入一个Excel文件,同样需要导入openpyxl库。然后使用Workbook方法创建一个新的工作簿,并选择要写入的工作表,最后使用save方法保存文件,例如: ```python from openpyxl import Workbook # 创建一个新的工作簿 workbook = Workbook() # 选择要写入的工作表 sheet = workbook.active # 写入单元格的值 sheet['A1'] = 'Hello' sheet['B1'] = 'World' # 保存文件 workbook.save('example.xlsx') ``` 除了读取和写入单个单元格的值,我们还可以遍历整个工作表,读取和写入多个单元格的值。通过使用for循环和遍历工作表的rows和columns属性,我们可以逐行或逐列读取和写入数据。 总结起来,以上是关于如何使用openpyxl库封装Excel文件的读取和写入。 ### 回答2: Excel文件的读取和写入是指在使用C语言编程中,对Excel文件进行操作的过程。可以通过封装相关的库或函数来实现这一功能。 在C语言中,可以使用第三方库例如libxl、libxlsxwriter等来实现对Excel文件的读取和写入。 对于读取Excel文件,首先需要打开要读取的Excel文件,并检查文件是否打开成功。然后可以通过相关的函数或方法获取Excel文件中的工作表和单元格的数据。可以通过遍历工作表中的行和列来读取所有的数据,并存储到相应的变量中。最后,完成读取后,需要关闭Excel文件并释放资源。 对于写入Excel文件,同样需要打开写入Excel文件,并检查文件是否打开成功。然后可以通过相关的函数或方法向工作表中的单元格写入数据。可以通过遍历要写入的数据,并将其逐个写入到相应的单元格中。完成写入后,同样需要关闭Excel文件并释放资源。 为了封装这一功能,可以将读取和写入Excel文件的逻辑封装成一个或多个函数,通过调用这些函数,可以实现对Excel文件的读取和写入操作。这样可以提高代码的复用性和可维护性,也方便其他程序员在需要读取和写入Excel文件时进行调用。 总之,封装Excel文件的读取和写入功能可以使得操作更加方便和高效。通过使用相关的库或函数,我们可以轻松地实现对Excel文件的读取和写入,并能够灵活地将这一功能封装成函数,方便在需要的地方进行调用。 ### 回答3: C语言可以使用开源库libxls和libxl来实现Excel文件的读取和写入封装。 1. 使用libxls库进行Excel文件的读取: - 首先,需要引入libxls库的头文件,并调用xls_open函数打开Excel文件。 - 通过调用xls_getSheet函数获取Sheet工作表的指针。 - 使用xls_parseSheet函数解析工作表数据,可以获取工作表的行数和列数。 - 通过遍历行和列的方式,可以获取工作表中每个单元格的值。 - 最后,调用xls_close函数关闭Excel文件。 2. 使用libxl库进行Excel文件的写入: - 首先,需要引入libxl库的头文件,并调用xlCreateBook函数创建一个新的工作簿。 - 通过调用xlBookAddSheet函数添加一个新的工作表。 - 使用xlSheetWriteStr函数写入字符串类型的数据,使用xlSheetWriteNum函数写入数值类型的数据,使用xlSheetWriteBool函数写入布尔类型的数据。 - 最后,通过调用xlBookSave函数保存工作簿为Excel文件,再调用xlBookRelease函数释放资源。 上述的封装过程可以根据具体的需求进行修改和扩展,可以对读取和写入Excel文件的操作进行封装成函数,提高代码的可读性和可维护性。同时,应注意异常情况的处理,如文件不存在或格式错误等,以确保程序的健壮性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值