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,并打开

VS2017-C++-使用CSpreadSheet写EXCEL

点击修改

VS2017-C++-使用CSpreadSheet写EXCEL

选中MFC并下载安装

VS2017-C++-使用CSpreadSheet写EXCEL

编译DLL

第一步:

创建MFC DLL项目,命名为SpreadSheet(记住这个名字,后面都是使用这个名字的)

VS2017-C++-使用CSpreadSheet写EXCEL

VS2017-C++-使用CSpreadSheet写EXCEL

创建好后目录如下:

VS2017-C++-使用CSpreadSheet写EXCEL

 

第二步

修改项目中的SpreadSheet.h文件,如下

VS2017-C++-使用CSpreadSheet写EXCEL

删掉构造函数,将类名改为CSpreadSheet,在类名前添 __declspec(dllexport)

 

第三步:

打开下载的CSpreadSheet.h

复制类的定义到MFC项目的SpreadSheet.h中

VS2017-C++-使用CSpreadSheet写EXCEL

包含两个头文件<odbcinst.h>和<afxdb.h>,将类的定义复制到 virtual BOOL InitInstance(); 和 DECLARE_MESSAGE_MAP() 两行代码之间。

 

然后修改项目中的SpreadSheet.cpp文件

VS2017-C++-使用CSpreadSheet写EXCEL

删掉构造函数 CSpreadSheetApp::CSpreadSheetApp()

删掉对象 CSpreadSheetApp theApp

将所有的CSpreadSheetApp修改为CSpreadSheet

 

然后打开下载的CSpreadSheet.h文件

将类实现复制到项目的SpreadSheet.cpp文件中

(CSpreadSheet.h文件的最后有一个#endif,不要将它也复制过来)

VS2017-C++-使用CSpreadSheet写EXCEL

这时候会显示很多错误,先不用管它

 

第四步

VS2017-C++-使用CSpreadSheet写EXCEL

打开项目的属性,将 配置属性>常规 中的字符集改为未设置

改完之后应该就不会显示错误了

 

然后

项目->右键属性->链接器->输入->附加依赖项      

添加 legacy_stdio_definitions.lib

VS2017-C++-使用CSpreadSheet写EXCEL

 

第五步

项目->右键->生成

VS2017-C++-使用CSpreadSheet写EXCEL

 

至此,编译完成

 

使用DLL

创建控制台应用程序

VS2017-C++-使用CSpreadSheet写EXCEL

复制文件

现在我们有两个项目,一个是SpreadSheet,用来生成DLL文件,另一个是SpreadSheetTest,用来使用CSpreadSheet这个类

在SpreadSheet项目文件目录下找到

  1. SpreadSheet.dll
  2. SpreadSheet.lib
  3. Resource.h
  4. SpreadSheet.h
  5. stdafx.h
  6. targetver.h
  7. stdafx.cpp

将它们复制到SpreadSheetTest项目下

VS2017-C++-使用CSpreadSheet写EXCEL

VS2017-C++-使用CSpreadSheet写EXCEL

 

VS2017-C++-使用CSpreadSheet写EXCEL

在SpreadSheetTest项目中

头文件->右键->添加->现有项     添加刚刚复制的文件中的头文件

源文件->右键->添加->现有项        添加刚刚复制的文件中的源文件

VS2017-C++-使用CSpreadSheet写EXCEL

修改stdafx.cpp文件(其实似乎可以不用包含stdafx.cpp文件的)

VS2017-C++-使用CSpreadSheet写EXCEL

VS2017默认创建的项目的CPP文件里面好像都要包含pch.h文件,以前的VS版本应该不需要这一步吧

 

在SpreadSheet.h中包含stdafx.h文件

VS2017-C++-使用CSpreadSheet写EXCEL

 

最后,配置项目的信息

VS2017-C++-使用CSpreadSheet写EXCEL

配置属性>链接器>输入 附加依赖项里添加SpreadSheet.lib

VS2017-C++-使用CSpreadSheet写EXCEL

配置属性>常规  

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();

}

VS2017-C++-使用CSpreadSheet写EXCEL

 

CSpreadSheet的详细用法见

https://www.codeproject.com/articles/1636/cspreadsheet-a-class-to-read-and-write-to-excel-an