VS2017-C++-使用CSpreadSheet写EXCEL
下载类文件(CSpreadSheet)
https://www.codeproject.com/articles/1636/cspreadsheet-a-class-to-read-and-write-to-excel-an
下载并安装MFC(如果VS里面没有MFC选项的话)
搜索Visual Studio Installer,并打开
点击修改
选中MFC并下载安装
编译DLL
第一步:
创建MFC DLL项目,命名为SpreadSheet(记住这个名字,后面都是使用这个名字的)
创建好后目录如下:
第二步
修改项目中的SpreadSheet.h文件,如下
删掉构造函数,将类名改为CSpreadSheet,在类名前添 __declspec(dllexport)
第三步:
打开下载的CSpreadSheet.h
复制类的定义到MFC项目的SpreadSheet.h中
包含两个头文件<odbcinst.h>和<afxdb.h>,将类的定义复制到 virtual BOOL InitInstance(); 和 DECLARE_MESSAGE_MAP() 两行代码之间。
然后修改项目中的SpreadSheet.cpp文件
删掉构造函数 CSpreadSheetApp::CSpreadSheetApp()
删掉对象 CSpreadSheetApp theApp
将所有的CSpreadSheetApp修改为CSpreadSheet
然后打开下载的CSpreadSheet.h文件
将类实现复制到项目的SpreadSheet.cpp文件中
(CSpreadSheet.h文件的最后有一个#endif,不要将它也复制过来)
这时候会显示很多错误,先不用管它
第四步
打开项目的属性,将 配置属性>常规 中的字符集改为未设置
改完之后应该就不会显示错误了
然后
项目->右键属性->链接器->输入->附加依赖项
添加 legacy_stdio_definitions.lib
第五步
项目->右键->生成
至此,编译完成
使用DLL
创建控制台应用程序
复制文件
现在我们有两个项目,一个是SpreadSheet,用来生成DLL文件,另一个是SpreadSheetTest,用来使用CSpreadSheet这个类
在SpreadSheet项目文件目录下找到
- SpreadSheet.dll
- SpreadSheet.lib
- Resource.h
- SpreadSheet.h
- stdafx.h
- targetver.h
- stdafx.cpp
将它们复制到SpreadSheetTest项目下
在SpreadSheetTest项目中
头文件->右键->添加->现有项 添加刚刚复制的文件中的头文件
源文件->右键->添加->现有项 添加刚刚复制的文件中的源文件
修改stdafx.cpp文件(其实似乎可以不用包含stdafx.cpp文件的)
VS2017默认创建的项目的CPP文件里面好像都要包含pch.h文件,以前的VS版本应该不需要这一步吧
在SpreadSheet.h中包含stdafx.h文件
最后,配置项目的信息
配置属性>链接器>输入 附加依赖项里添加SpreadSheet.lib
配置属性>常规
MFC的使用:在共享DLL中使用MFC
字符集:未设置
至此,可以使用CSpreadSheet了
#include "pch.h"
#include <iostream>
#include"SpreadSheet.h"
int main()
{
CSpreadSheet sheet("sheetfilename.xls", "sheetname");
CStringArray headers, row;
headers.Add("str1");
headers.Add("str2");
headers.Add("str3");
row.Add("hello");
row.Add("world");
row.Add("!");
sheet.BeginTransaction();
//似乎必须要有headers,没有headers的话好像就没有输出文件。。。
sheet.AddHeaders(headers);
sheet.AddRow(row);
sheet.Commit();
}
CSpreadSheet的详细用法见
https://www.codeproject.com/articles/1636/cspreadsheet-a-class-to-read-and-write-to-excel-an