自己写了一个C++类,用于将浮点型数据写入Excel表格,由于目的简单,因此只实现了只在第一列输入或者擦除数据。
头文件:file_writer.h
#pragma once
#include<iostream>
#include <fstream>
#include<sstream>
#include <string>
class file_writer{
public:
/** @brief 从表格开头输入数据
@param the_data 输入的双精度浮点型数据
*/
void input_data_at_start(double the_data);
/*擦除写入表格的数据*/
void clear_data_in_file();
/** @brief 打开文件
@param file_name 文件名称,例如:"C:\\Users\\Administrator\\test.xlsx",间隔请使用双斜线
*/
void openfile(const char* file_name);
/** @brief 初始化文件名称并打开文件
@param file_name 文件名称,例如:"C:\\Users\\Administrator\\test.xlsx",间隔请使用双斜线
*/
file_writer(const char* file_name);
/*关闭文件*/
void close_file();
file_writer();
~file_writer();
private:
std::ofstream write_file_;
int data_number_ = 0;
bool FILE_HAVE_OPEN = 0;
const char* file_name_ = "123";
};
源文件:file_writer.cpp
#include "file_writer.h"
std::string convertToString(double d) {
std::ostringstream os;
if (os << d)
return os.str();
return "invalid conversion";
}
void file_writer::input_data_at_start(double the_data) {
if (FILE_HAVE_OPEN) {
data_number_++;
std::string input_string = convertToString(the_data);
write_file_ << input_string << std::endl;
}
}
void file_writer::clear_data_in_file() {
int i;
if (FILE_HAVE_OPEN)
write_file_.close();
write_file_.open(file_name_);
for (i = 0; i < data_number_; i++) {
write_file_ << "" << std::endl;
}
data_number_ = 0;
}
void file_writer::openfile(const char* file_name) {
if (!FILE_HAVE_OPEN) {
write_file_.open(file_name);
file_name_ = file_name;
FILE_HAVE_OPEN = 1;
}
}
file_writer::file_writer(const char* file_name) {
file_name_ = file_name;
write_file_.open(file_name);
FILE_HAVE_OPEN = 1;
}
void file_writer::close_file() {
write_file_.close();
}
file_writer::file_writer() {
}
file_writer::~file_writer() {
}
示例代码:
void main()
{
file_writer File_writer("C:\\Users\\Administrator\\Desktop\\T\\test.xlsx");//打开文件,也可以用openfile()函数
for (int i = 0; i < 5; i++) {
File_writer.input_data_at_start(3.141592653);//从A1开始逐行写入数据,数据只会在第一列写入,该函数无法写入其他列
}
File_writer.clear_data_in_file();//清空文件中的数据
File_writer.close_file();//关闭文件
}
使用上述代码但是未运行函数:clear_data_in_file()后的结果: