精华内容
下载资源
问答
  • c++ 读写excel xlsx 文件
    千次阅读
    2019-06-18 13:51:11
    更多相关内容
  • 代码调用: xlnt::CXlsxExcelReader excelReader("1.xlsx"); excelReader.selectWorkSheet(0); int rows = excelReader.getRowsCount(); int cols = excelReader.getColsCount(); for (UINT row = 0; row ; row++) ...

    采用xlnt开源库的实现,声明如下:

    #define XLNT_STATIC 1
    #include "./xlnt/xlnt.hpp"
    #ifdef _DEBUG
    //#pragma comment(lib, "./xlnt/lib/xlntd.lib")
    #pragma comment(lib, "./xlnt/xlntd.lib")
    #else
    #pragma comment(lib, "./xlnt/lib/xlnt.lib")
    #endif // _DEBUG
    
    namespace xlnt
    {
    	class CXlsxExcelReader
    	{
    	public:
    		CXlsxExcelReader(CString strpath);
    		~CXlsxExcelReader();
    
    		// 工作簿
    		xlnt::workbook* getWorkBook();
    
    		// 工作表
    		xlnt::worksheet* selectWorkSheet(int sheetIndex);
    
    		//获取工作表数量
    		int getSheetsCount();
    
    		//获取工作表名称
    		CString getSheetName(int sheetIndex);
    
    		//获取工作表单元格内容
    		CString getCellValue(int row, int column);
    
    		//获取单元表行数
    		int getRowsCount();
    
    		//获取单元表列数
    		int getColsCount();
    
    	private:
    		// 工作簿
    		xlnt::workbook m_workbook;
    
    		// 工作表
    		xlnt::worksheet m_worksheet;
    	};
    };

    定义如下:

    namespace xlnt
    {
    	CXlsxExcelReader::CXlsxExcelReader(CString strpath)
    	{
    #ifdef UNICODE
    		CStringA strFileName = CStrUtils::UnicodeToUtf8(strpath);
    #else
    		CStringA strFileName = CStrUtils::AnsiToUtf8(strpath);
    #endif // UNICODE		
    		m_workbook.load(strFileName.GetBuffer(0));
    		m_worksheet = m_workbook.active_sheet();
    	}
    
    	CXlsxExcelReader::~CXlsxExcelReader()
    	{
    	}
    
    	// 工作簿
    	xlnt::workbook* CXlsxExcelReader::getWorkBook() {
    		return &m_workbook;
    	}
    
    	// 工作表
    	xlnt::worksheet* CXlsxExcelReader::selectWorkSheet(int sheetIndex)
    	{
    		m_worksheet = m_workbook.sheet_by_index(sheetIndex);
    		return &m_worksheet;
    	}
    	//获取工作表数量
    	int CXlsxExcelReader::getSheetsCount()
    	{
    		return m_workbook.sheet_count();
    	}
    
    	//获取工作表名称
    	CString CXlsxExcelReader::getSheetName(int sheetIndex)
    	{
    #ifdef UNICODE
    		USES_CONVERSION;
    		return A2W(pWB.sheet_titles()[sheetIndex].c_str());
    #else
    		return m_workbook.sheet_titles()[sheetIndex].c_str();
    #endif // UNICODE
    	}
    
    	//获取工作表单元格内容
    	CString CXlsxExcelReader::getCellValue(int row, int column)
    	{
    		// 单元格
    		try
    		{
    			if (row == 2722 && column == 2) {
    				xlnt::cell pCell = m_worksheet.cell(column + 1, row + 1);
    				std::string rsString = pCell.to_string();
    #ifdef UNICODE
    				CString rString = CStrUtils::Utf8ToUnicode(rsString.c_str());
    				return rString;
    #else
    				CString rString = CStrUtils::Utf8ToAnsi(rsString.c_str());
    				return rString;
    #endif // UNICODE
    			}
    			else {
    				xlnt::cell pCell = m_worksheet.cell(column + 1, row + 1);
    				std::string rsString = pCell.to_string();
    #ifdef UNICODE
    				CString rString = CStrUtils::Utf8ToUnicode(rsString.c_str());
    				return rString;
    #else
    				CString rString = CStrUtils::Utf8ToAnsi(rsString.c_str());
    				return rString;
    #endif // UNICODE
    			}
    		}
    		catch (...) {
    			return _T("error");
    		}
    	}
    
    	//获取单元表行数
    	int CXlsxExcelReader::getRowsCount()
    	{
    		return m_worksheet.rows().length();
    	}
    
    	//获取单元表列数
    	int CXlsxExcelReader::getColsCount()
    	{
    		return m_worksheet.columns().length();
    	}
    }

    源码里面涉及到几处字符串编码的转换(往期代码有介绍),这种代码网上很多,自己找找看。

    代码调用:

    xlnt::CXlsxExcelReader excelReader("1.xlsx");
    excelReader.selectWorkSheet(0);
    int rows = excelReader.getRowsCount();
    int cols = excelReader.getColsCount();
    for (UINT row = 0; row < rows; row++) {
    	for (UINT col = 0; col < cols; col++) {
            CStringA sValue = excelReader.getCellValue(row, col);
        }
    }

     

    展开全文
  • C++读写Excel文件

    2020-03-25 17:11:35
    OpenXLSX是一套开源的读、写、创建、修改Excel文件(格式:xlsx)的C++库。附件内容:源码+示例。
  • 此程序用于MFC读写excle文件的操作类。可以操作xls和xlsx文件。 有网上的收集的资料,和优化后可用在项目中的操作类。有兴趣的朋友可以在此基础上添加更多的读写功能。
  • c++读写xlsx生成lua表

    2018-05-23 10:46:23
    使用xlslib库读写xlsx文件生成lua表:如何生成lua表可以自己改写规则。现在生成的是:例如:BBB = { id_999 = {id=999,name="大家好"} } 。name对应的是xlsx某列的名字。里面有xlsx文件模板。xlslib使用到的头文件和...
  • C++读取excel数据

    2020-08-03 19:27:16
    读取环境为Win10+VS2015,个人参考资料封装的excel读取模块用来读取Excel2007中的数据,文件为压缩文件,亲测可用。
  • 开源个人珍藏 mfc(c++读写xls和xlsx文件的类
  • #else #pragma comment(lib, "./xlsxwriter/lib/release/xlsxwriter.lib") #endif // _DEBUG //创建工作簿 lxw_workbook *workbook = workbook_new(CStrUtils::AnsiToUtf8("D:\\测试.xlsx")); //创建分页 lxw_...

    采用xlsxwriter开源库的实现,声明如下:

    #include "./xlsxwriter/include/xmlwriter.h"
    #include "./xlsxwriter/include/workbook.h"
    #include "./xlsxwriter/include/worksheet.h"
    #ifdef _DEBUG
    #pragma comment(lib, "./xlsxwriter/lib/debug/xlsxwriter.lib")
    #else
    #pragma comment(lib, "./xlsxwriter/lib/release/xlsxwriter.lib")
    #endif // _DEBUG
    
    //创建工作簿
    lxw_workbook  *workbook = workbook_new(CStrUtils::AnsiToUtf8("D:\\测试.xlsx"));
    //创建分页
    lxw_worksheet *worksheet = workbook_add_worksheet(workbook, "Sheet1");
    //写入数据
    worksheet_write_string(worksheet, 0, 0, "Row-0 Column-0", NULL);
    worksheet_write_string(worksheet, 0, 1, "Row-0 Column-1", NULL);
    //保存文档
    lxw_error err = workbook_close(workbook);
    if (LXW_NO_ERROR != err) {
    	//保存失败
    }
    展开全文
  • C++读取 .csv / .xlsx 文件中的指定数据(非常实用)

    千次阅读 热门讨论 2021-12-10 16:42:08
    在做数据处理或者图像处理时,偶尔需要从文件读取数据,本文主要是从 .csv 中读取数据,读取的数据可以是某一行、某一列或具体某一个数值/坐标; 1、数据介绍 本文所使用的数据如下表所示,列从零开始计数,第 0...

            说明:如果您的文件是 .xlsx ,需要您先打开 .xlsx 文件,然后另存为 .csv 文件,最后使用下述代码进行读取!!!

            注意:直接修改文件后缀不行哦!!!

            在做数据处理或者图像处理时,偶尔需要从文件中读取数据,本文主要是从 .csv 中读取数据,读取的数据可以是某一行、某一列或具体某一个数值/坐标; 

    1、数据介绍

            本文所使用的数据如下表所示,列从零开始计数,第 0、4、5 列为具体数值,第 1、2、3 列为坐标数据;本文的目标是把表格中的数据逐个读取出来,以备项目可视化使用;

    2、代码实现

    #include <iostream>
    #include <fstream>
    #include <sstream>
    #include <vector>
    
    using namespace std;
    
    
    int main()
    {
    	//读取文件中的数据
    	ifstream ifs;							//创建流对象
    
    	ifs.open("./myPosition.csv", ios::in);	//打开文件
    
    	if (!ifs.is_open())						//判断文件是否打开
    	{
    		cout << "打开文件失败!!!";
    		return 0;
    	}
    
    	vector<string> item;		//用于存放文件中的一行数据
    
    	string temp;				//临时存储文件中的一行数据
    
    	while (getline(ifs, temp))  //利用 getline()读取文件中的每一行,并放入到 item 中
    	{
    		item.push_back(temp);
    	}
        
        //遍历文件中的每一行数据
    	for (auto it = item.begin(); it != item.end(); it++)
    	{
    		string str;
    
    		//其作用是把字符串分解为单词(在此处就是把一行数据分为单个数据)
    		istringstream istr(*it);                 
    
    		//将字符串流 istr 中的字符读入到 str 字符串中,读取方式是以逗号为分隔符 
    		getline(istr, str, ',');                 
    		cout << str << "\t";            // str 对应第一列数据
            //atoi(str.c_str())该函数将字符转化为 int 数据            
    
    		getline(istr, str, ',');                    
    		cout << str << "\t";            // str 对应第二列数据 
    
    		getline(istr, str, ',');                
    		cout << str << "\t";            // str 对应第三列数据   
    
    		getline(istr, str, ',');                
    		cout << str << "\t";            // str 对应第四列数据 
    
    		getline(istr, str, ',');                  
    		cout << str << "\t";            // str 对应第五列数据 
    
    		getline(istr, str, ',');                 
    		cout << str << endl;            // str 对应第六列数据    
    	}    
    
    	system("pause");
    	return 0;
    }

    3、实验结果 

            下图是我对读取的数据进行了输出,读者可以根据需要自行保存自己需要的数据即可,不需要的数据可以不做处理;此外,读者还可以使用 atoi(str.c_str()) 函数把想要的数据由字符型转化为 int ; 

     4、代码说明

            我主要是把 .csv 中的数据读出来,然后使用 Qt 界面进行可视化,如下图所示;所以无需把字符串数据转化为整型或浮点型;如果读者有需要可以使用 atoi(str.c_str())、atof(str.c_str())函数自行转换;

            具体代码说明,见上文注释,非常详细,谢谢!!!

            读取 .txt 文件中的一列或多列数据见:

            https://blog.csdn.net/weixin_47156401/article/details/121798931

    展开全文
  • c++实现txt文件读写,并解决txt编码格式为UTF-8显示乱码问题。
  • C++读取XLSX文件

    2017-10-12 17:59:47
    如题,打算读取俩个XLSX文件,并对被读取的俩个文件内容进行对比,看是否一致
  • 适用场景:java读取excel对应xls或xlsx格式文件1.桌面对应文件xls与xlsx2.文件中的内容xls:xlsx:注意点:excel格式文件列中对应是数值时需要变成文本,如下图3.运行代码代码:package com.test;import java.io....
  • C++读取Excel数据

    2017-04-13 18:04:53
    C++读取Excel数据
  • xlnt::workbook wb/*(xlnt::path("E:\\project\\xyyh\\xltest\\test_passwd.xlsx"),"1234")*/; //if (filename[0] == '\0') //err = wb.load("E:\\project\\xyyh\\xltest\\test.xlsx"); err = wb.load("E:\\...
  • VS2013 C++读取/写入EXCEL(office2010)文件,读取/写入数据操作,新人学习可用。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
  • 读取xlsx文件的C库

    2015-10-28 00:42:14
    C语言读取Microsoft Excel 2007格式(xlsx)文件的跨平台示例,不依赖于MS的东西
  • 在Qt模块中勾选ActiveQt ...然后使用如下代码进行读写Excel文件读取Excel文件: //读取excel文件 QString readFile = QFileDialog::getOpenFileName(this, QStringLiteral("选择Excel文件"), "", tr("Exel file(*.x
  • C++ 读取和写入txt文件

    千次阅读 2020-11-16 10:13:46
    void readTxt(string ... //将文件流对象与文件连接起来 assert(infile.is_open()); //若失败,则输出错误消息,并终止程序运行 string s; while(getline(infile,s)) { cout<<s<<endl; } infile.
  • C/C++读写excel文件 的几种方式

    千次阅读 2020-03-04 21:33:05
    C++读取Excel的XLS文件的方法有很多,但是也许就是因为方法太多,大家在选择的时候会很疑惑。 由于前两天要做导表工具,比较了常用的方法,总结一下写个短文, 1.OLE的方式 这个大约是最常用的方式,这个...
  • 一个用于读取、写入、创建和修改Microsoft Excel:registered:(.xlsx)文件c++库。- troldal / OpenXLSX-源码
  • C/C++读写excel文件

    万次阅读 2015-05-09 17:59:14
    http://blog.csdn.net/fullsail/article/details/8449448C++读取Excel的XLS文件的方法有很多,但是也许就是因为方法太多,大家在选择的时候会很疑惑。 由于前两天要做导表工具,比较了常用的方法,总结一下写个...
  • 跨平台C库,用于从.xlsx文件读取值并将值写入.xlsx文件。 描述 XLSX I / O旨在提供一个用于读取和写入.xlsx文件的C库。 .xlsx文件格式是Microsoft(R)Excel(TM)自2007版以来使用的本机格式。 目标 编写库时要...
  • c++读取EXCEL表

    2018-09-01 14:59:35
    c++读取excel表,获取表格数据,自己测试了好几次,可以用
  • 为什么c++没有内置的读取excle的函数啊,之前都用Python和MATLAB习惯了。才发现c++没有。但是实习需要MATLAB转c。拖了两天还是不得不做了。 一、QAxObject相关函数 该部分内容采用了如下网址的介绍 lQt中使用...
  • C++读取excel表格

    万次阅读 多人点赞 2014-12-25 11:19:08
    C++读取excel文件 1 创建mfc程序(这里以vs2013为例) 2 添加读取excel文件用到的类 3 添加完成后,找到相关头文件,注释/删除 4 再次编译还是有错误 5 添加源码(最重要的一步)
  • C++读写txt文件(基本操作1)

    万次阅读 多人点赞 2017-11-30 17:49:02
    本博客主要写了用C++读写txt本文的基本操作,最简单的写入和读出两个基本操作。 本程序的功能是向Test.txt文件文件写入字符串"This is a Test12!"和读取字符串"This is a Test12!",并且将读取到的字符串存到temp...
  • #C++计算数值出现次数并将运行结果生成txt或xlsx文件 前两周爸爸给我安排了一个任务,他想计算一组数据中每个代号出现的次数,希望我能用程序帮他解决一下。代码两周前写好的,但因为没时间(懒)所以一直没在博客...
  • 用微软提供的组件来操作excel ,C++操作EXCEL,支持读写、设置字体和单元格属性,适合初学者参考。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,816
精华内容 1,126
关键字:

c++读取xlsx文件

c++ 订阅