C++和excel交互

最近碰到在c++端打算把数据写入交互excel,一开始觉得opencv也有对应的库函数,后来发现c++端使用IO流就可以实现,现在记录一下:

// openblas-test.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <fstream>
#include <streambuf>
#include <iostream>
#include <string>
/*
#include <stdio.h>
#include <stdlib.h>

#include <opencv2\opencv.hpp>
#include <opencv2\highgui.hpp>
#include <opencv2\core.hpp>

#include "cblas.h"
#include "cblas_f77.h"

using namespace std;
using namespace cv;
using namespace cv::cuda;

void nonlocalMeansFilter(Mat&, Mat&, int, int, double, double);
void writeToExcel(Mat, string);
*/
using namespace std;

void write_to_excel(string filename, bool&flag);

#define INVALID -1

int main(int argv, char**argc) {
	/*
	Mat srcImg = imread("D:\\project\\Image\\lena.jpg", 1);
	Mat dst1, dst2, dst3;

	// bilateralFilter(srcImg, dst1, 15, 130, 200);

	// writeToExcel(srcImg, "2.xls");


	imshow("src", srcImg);
	// imshow("bilateralFilter result", dst1);

	// fastNlMeansDenoising(srcImg, dst3);
	// nonlocalMeansFilter(srcImg, dst2, 3, 7, 25, 25);
	*/

	bool flag = false;
	write_to_excel("test2.xls", flag);

	// imshow("fastNlMeansDenoising result", dst2);

	// waitKey(0);

	return 0;
}
/*
void writeToExcel(Mat outputImage, string fileName)
{

	ofstream Fs(fileName);
	if (!Fs.is_open())
	{
		cout << "error!" << endl;
		return;
	}

	int channels = outputImage.channels();            //获取图像channel  
	int nrows = outputImage.rows;                     //矩阵的行数  
	int ncols = outputImage.cols*channels;             //矩阵的总列数=列数*channel分量数  

													   //循环用变量
	int i = 0;
	int j = 0;

	if (outputImage.depth() == CV_8U)//uchar
	{
		for (i = 0; i<nrows; i++)
		{
			for (j = 0; j<ncols; j++)
			{
				int tmpVal = (int)outputImage.ptr<uchar>(i)[j];
				Fs << tmpVal << '\t';
			}
			Fs << endl;
		}
	}
	else if (outputImage.depth() == CV_16S)//short
	{
		for (i = 0; i<nrows; i++)
		{
			for (j = 0; j<ncols; j++)
			{
				Fs << (short)outputImage.ptr<short>(i)[j] << '\t';
			}
			Fs << endl;
		}
	}
	else if (outputImage.depth() == CV_16U)//unsigned short
	{
		for (i = 0; i<nrows; i++)
		{
			for (j = 0; j<ncols; j++)
			{
				Fs << (unsigned short)outputImage.ptr<unsigned short>(i)[j] << '\t';
			}
			Fs << endl;
		}
	}
	else if (outputImage.depth() == CV_32S)//int 
	{
		for (i = 0; i<nrows; i++)
		{
			for (j = 0; j<ncols; j++)
			{
				Fs << (int)outputImage.ptr<int>(i)[j] << '\t';
			}
			Fs << endl;
		}
	}
	else if (outputImage.depth() == CV_32F)//float
	{
		for (i = 0; i<nrows; i++)
		{
			for (j = 0; j<ncols; j++)
			{
				Fs << (float)outputImage.ptr<float>(i)[j] << '\t';
			}
			Fs << endl;
		}
	}
	else//CV_64F double
	{
		for (i = 0; i < nrows; i++)
		{
			for (j = 0; j < ncols; j++)
			{
				Fs << (double)outputImage.ptr<double>(i)[j] << '\t';
			}
			Fs << endl;
		}
	}

	Fs.close();
}
*/
void write_to_excel(string filename, bool&flag)
{
	//定义文件输出流   
	ofstream oFile;

	//打开要输出的文件   
	oFile.open(filename, ios::out | ios::trunc);    // 这样就很容易的输出一个需要的excel 文件  
	oFile << "姓名" << "\t" << "年龄" << "\t" << "班级" << "\t" << "班主任" << endl;
	oFile << "张三" << "\t" << "22" << "\t" << "1" << "\t" << "JIM" << endl;
	oFile << "李四" << "\t" << "23" << "\t" << "3" << "\t" << "TOM" << endl;

	oFile.close();


	//打开要输出的文件   
	ifstream iFile(filename);
	string   readStr((std::istreambuf_iterator<char>(iFile)), std::istreambuf_iterator<char>());
	cout << readStr.c_str();

	flag = 1;

}
  • 4
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: C和SQLite是两种完全不同的技术。C是一种通用的编程语言,而SQLite是一种嵌入式数据库引擎。 C语言是一种功能强大的编程语言,广泛用于开发各种应用程序。它提供了丰富的库和函数,使得开发人员能够灵活地控制计算机的底层资源。通过C语言,我们可以进行低级别的内存操作、文件操作、网络编程等。 SQLite是一种嵌入式数据库引擎,可以嵌入到应用程序中,提供数据库功能。它是一种轻量级的关系型数据库系统,具有快速、可靠、易于使用等特点。SQLite使用简单的SQL语句来管理和操作数据,可以方便地进行数据查询、插入、更新和删除操作。由于其小巧、高效的特性,它被广泛地应用于各种移动设备、嵌入式系统和桌面应用程序中。 Excel是一个常用的电子表格软件,用于处理和分析数据。它提供了丰富的功能,如数据计算、图表绘制、数据筛选和排序等。通过Excel,我们可以方便地进行数据的录入、整理和分析,对大量的数据进行统计和可视化展示。 虽然C和SQLite、Excel都与数据处理有关,但它们之间的关联性不大。C语言可以用于开发与数据库或电子表格软件相关的应用程序,在应用程序层面上与SQLite和Excel进行交互。例如,可以使用C语言编写程序从SQLite数据库读取数据并在Excel中进行分析和展示。但是,C语言本身并不包含与SQLite或Excel的具体操作有关的功能。要实现与SQLite或Excel的具体操作,我们需要使用特定的库或API来处理。 ### 回答2: C sqlite和Excel都是广泛使用的数据管理工具。 首先,C语言是一种广泛使用的编程语言,可以用于开发各种应用程序。C语言提供了SQLite库,这是一个轻量级的关系型数据库管理系统。SQLite使用单一的磁盘文件来存储整个数据库,不需要独立的服务器进程,因此非常适合在嵌入式设备或简单应用程序中使用。C语言与SQLite可实现高效的数据存储、查询、更新和删除。 另一方面,Excel是一种电子表格软件,主要用于数据分析和管理。它提供了一种直观的界面,用户可以通过单元格输入数据、进行公式计算和数据整理。Excel可以用于记录和分析大量数据,包括数值、文本、日期和图表等。它还提供了诸如筛选、排序、函数和宏等功能,使得对数据进行复杂的操作和分析变得更加简便。 相较而言,C sqlite和Excel具有许多不同之处。C sqlite是一种编程工具,可以通过编写代码来实现对数据库的操作,而Excel则提供了一个图形化界面,无需编程即可进行数据处理和操作。C sqlite更适用于开发复杂的应用程序,而Excel更适合进行简单且快速的数据分析和管理。 总而言之,C sqlite和Excel都是为了帮助用户管理和处理数据而设计的工具。选择使用哪种工具应根据具体需求和要求来决定,是否需要进行编程,以及对数据处理的复杂度有何要求。 ### 回答3: c是一种编程语言,sqlite则是一种轻量级的嵌入式数据库管理系统,而excel是一种常用的电子表格软件。三者在数据库操作和数据存储方面有一些不同之处。 c作为一种编程语言,可以通过调用sqlite的API来实现与sqlite数据库的连接和操作。通过编写c程序,我们可以创建、读取、更新和删除sqlite数据库中的数据。同时,c也提供了一些库函数来处理excel文件,可以实现对excel文件的读写和操作。 sqlite是一种嵌入式数据库管理系统,与传统的客户端-服务器模式的数据库系统不同,它将数据库嵌入到应用程序中,不需要额外的服务器进程。使用sqlite,我们可以在本地存储和管理数据,非常适用于移动设备或桌面应用。在c程序中,我们可以使用sqlite的API来执行各种数据库操作,如创建表、插入数据、查询数据等。 excel是一种常用的电子表格软件,广泛应用于办公和数据分析领域。它提供了丰富的功能来处理和分析数据,如数据排序、筛选、图表制作等。通过c程序,我们可以使用一些库函数来读取和写入excel文件,实现对excel数据的读写和处理。 综上所述,c可以通过sqlite的API来实现与sqlite数据库的连接和操作,并且还提供了一些库函数来处理excel文件。这使得我们能够在c程序中完成数据库操作和excel数据的读写和处理,为数据管理和处理提供了便利。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值