参考于:http://blog.sina.com.cn/s/blog_a6fb6cc90101gv2p.html
自己总结写的个简单的Excel类
有Excel的基本操作,如打开、创建、写、读、修改字体、合并方框、获取行、列等操作。
使用注意事项:每次获取了工作表数量之后,需要重新选中工作表!
关于怎么判断Excel是否被打开;原本是判断打开之后有没有生成对应的~$*.xlsx。结果发现没有生成对应文件,就只能用变量来判断文件是否被打开了。
若需要在线程中使用,需要在run中添加
HRESULT r = OleInitialize(0);
头文件为:#include <ole2.h>
下面是自己写的.h 文件
具体文件内容见:https://download.youkuaiyun.com/download/qq_42401265/12108692
#ifndef EXCEL_FILE_H
#define EXCEL_FILE_H
#include <QAxObject>
#include <QFileInfo>
#include <QDir>
#include <QColor>
#include <QString>
class Excel_File
{
public:
Excel_File();
Excel_File(QString filepath,QString filename);
~Excel_File();
bool open();
//bool isopen();
bool getopenflag();
void setFileName(QString name);//设置文件的名字
void setFilePath(QString name);//设置路径
void save();
void quit();
void selectTable(int num);//选中那个表单
int getTableNum();//获取工作表的数量
QString getTableName();//获取当前工作表的名字
void setValues(QList<QList<QVariant>> &data,QString num);//批量写值 num设置如 "A1:B8"
void setValue(int row,int col,QString value); //写值
void getValues(QList<QList<QVariant>> &values,QString num);//批量读值 num设置如 "A1:B8"
QString getValue(int row,int col);//获取选择的内容
QVariant getHeadLine();//获取标题
void deleteTableNum(int num);//删除指定的工作表
int cols();//列数
int rows();//行数
int getStartCols();//获取起始列数
int getStartRows();//获取起始行数
void setFontColor(int row,int col,QColor color); //设置字体颜色
void setCellH(int row,int col,int H);//设置行高
void setCellW(int row,int col,int W);//设置行宽
void setJustifyLeft(int row,int col);//设置左对齐
void setJustifyRight(int row,int col);//设置右对齐
void setJustifypUp(int row,int col);//设置上对齐
void setJustifyDown(int row,int col);//设置下对齐
void setJustifyCentre(int row,int col);//设置中心对齐
void setWordWrap(int row,int col);//设置自动换行
void clearCell(int row,int col);//清空指定单元格类容
void setBackColor(int row,int col,QColor color);//设置背景色
void setOutlineColor(int row,int col,QColor color);//设置边框颜色
void setFontWeight(int row,int col);//设置字体加粗
void setFontSize(int row,int col,int size);//设置字体大小
void setFontItalic(int row,int col);//设置斜体
void setFontUnderline(int row,int col);//设置下划线
void setMergedCell(QString num);//设置合并单元格如A1:A3
void setSplitCells(QString num);//设置拆分单元格如A1:A3
private:
QAxObject *excel;
QAxObject *workbooks;
QAxObject *workbook;
QAxObject *work_book;
QAxObject *worksheet;
QAxObject *cell;
QAxObject *font;
QString flie_path="C:/数据"; //文件路径
QString flie_name="1.xlsx"; //文件名字
bool isopen=false;
bool isDirExist(QString fullPath);//判断文件夹是否存在,不存在则创建,创建成功反正真
bool isFileExist(QString fullFileName);//判断文件是否存在 存在返回真,不存在则创建
};
#endif // EXCEL_FILE_H