C++二进制导出到Excel代码
来源:互联网 发布:拼长图的软件 编辑:程序博客网 时间:2024/06/05 21:16
我使用C++语言编写的导出Excel文件的代码。
功能:
1:可生成Xls的Excel二进制文件,但不包括最新的2007格式(此格式正在编写学习中)。
2:生成字符串、数字、日期等格式的单元格,可以自由设置格式。
3:自由嵌入多个图片(目前不需要也不想支持线型、文本框等图型元素)。
4:自由合并单元格,设置列宽和行高(以像素为单位)。
5:可同时生成多个命名的Sheet。
特点:
1:快速。
2:体积小且格式正确,未发现生成的文件有任何异常。
3:C++语言编写的。(2011-02-26)
主要用途:
目的是主要应用于在项目中生成Excel,比如在报表中导出Excel等,所以不包括像公式这样的在导出时用不到的功能。
代码分为头文件和Cpp文件,但不包括里面用到的一个自定义类CTArray,这个类是我自己实现的。看情况如果需要再贴出。
ExcelWorkBook1.h:
ExcelWorkBook1.cpp:
下载链接
template<typename T, int I=256, bool Auto=false>class CTArray{public:CTArray(void): m_Array(NULL), m_Count(0), m_MaxSize(I), m_AutoSize(Auto){this->m_Array=new T[this->m_MaxSize];/*尊重元素的构造函数,不能强制的都初始化为0值memset(this->m_Array, 0, sizeof(T)*this->m_MaxSize);*/}CTArray(CTArray& src){this->m_MaxSize=src.m_Count;//Copy合适的大小this->m_Count=src.m_Count;this->m_AutoSize=src.m_AutoSize;this->m_Array=new T[src.m_Count];memcpy_s(this->m_Array, sizeof(T)*src.m_Count, src.m_Array, sizeof(T)*src.m_Count);}~CTArray(void){ delete[] this->m_Array;}int Count(void){return this->m_Count;}void RemoveAll(void){this->m_Count=0;}void DeleteAll(void){for(int i=0;i<this->m_Count;i++){delete *(this->m_Array+i);}this->m_Count=0;}void Zero(){memset(this->m_Array, 0, sizeof(T)*this->m_MaxSize);}CTArray& operator=(CTArray& src){this->m_MaxSize=src.m_Count;//Copy合适的大小this->m_Count=src.m_Count;this->m_AutoSize=src.m_AutoSize;this->m_Array=new T[src.m_Count];memcpy_s(this->m_Array, sizeof(T)*src.m_Count, src.m_Array, sizeof(T)*src.m_Count);return *this;}T& operator[](int index){if(m_AutoSize){this->EnsureSize(index+1);}return this->m_Array[index];}T* GetAt(int index){if (m_AutoSize){this->EnsureSize(index+1);}return this->m_Array+index;}int Add(T value){this->EnsureSize();this->m_Array[this->m_Count]= value;return this->m_Count++;}int Add(T value, int length){this->EnsureSize();memcpy(this->m_Array[this->m_Count++], value, length*(sizeof value[0]));return this->m_Count;}int Insert(int index, T value){this->EnsureSize();for(int i=this->m_Count-1;i>index-1;i--){this->m_Array[i+1]=this->m_Array[i];}this->m_Array[index]=value;return ++this->m_Count;}int Insert(int index, T value, int length){this->EnsureSize();for(int i=this->m_Count-1;i>index-1;i--){memcpy(this->m_Array[i+1], this->m_Array[i], sizeof this->m_Array[i]);}memcpy(this->m_Array[index], value, length*(sizeof value[0]));return ++this->m_Count;}void EnsureSize(int size=0){//int count=this->m_Count;if (size>0 && this->m_Count<size){this->m_Count=size;}if (this->m_Count<this->m_MaxSize){/*尊重元素的构造函数,不能强制的都初始化为0值for(int i=count;i<this->m_Count;i++){memset(this->m_Array+count, 0, sizeof(T)*(this->m_Count-count));}*/return;}this->m_MaxSize=this->m_Count+I;T* tmpArray=new T[this->m_MaxSize];memcpy(tmpArray, this->m_Array, this->m_Count*sizeof(T));/*尊重元素的构造函数,不能强制的都初始化为0值memset(tmpArray+count, 0, sizeof(T)*(this->m_MaxSize-count));*/delete[] this->m_Array;this->m_Array=tmpArray;}void Sort(){CTArray::quickSort(this->m_Array, 0, this->m_Count-1);}T* Array(){return this->m_Array;}void static quickSort(T* tArray, int left, int right){do{int lindex = left;int rindex = right;int m = (lindex + rindex) >> 1;T mv = tArray[m];do{while (tArray[lindex]<mv){lindex++;}while (mv<tArray[rindex]){rindex--;}if (lindex > rindex){break;}if (lindex < rindex){T lv = tArray[lindex];tArray[lindex] = tArray[rindex];tArray[rindex] = lv;}lindex++;rindex--;}while (lindex <= rindex);if ((rindex - left) <= (right - lindex)){if (left < rindex){quickSort(tArray, left, rindex);}left = lindex;}else{if (lindex < right){quickSort(tArray, lindex, right);}right = rindex;}}while (left < right);}public:T* m_Array;int m_Count;bool m_AutoSize;private:int m_MaxSize;};
欢迎给出意见!2011-02-26 09:58:49
- C++二进制导出到Excel代码
- 导出到excel代码
- 导出EXCEL代码(C#)
- 导出EXCEL代码(C#)
- 导出EXCEL代码(C#)
- DataGrid导出到Excel代码
- DataTable 导出到EXCEL代码
- 【C#】数据导出到Excel
- C#导出导入到Excel的代码
- vb.net导出数据到Excel代码
- C#导出到Excel的代码
- Java代码将数据导出到Excel
- C#datagridview导出数据到excel
- DataSet导出到Excel (c#)
- c#sql数据导出到excel
- [C#]网格数据导出到Excel,Excel转DataSet
- java代码导出数据到Excel、js导出数据到Excel
- 下面代码实现将 GridView 导出到 Excel文件中。
- Android layout xml总结
- Create Ocx control CLIENT Application step by step (VS 2008)
- sudo问题解决 用户名is not in the sudoers file
- 磁盘分区步骤(不破坏数据)
- 词法分析 —— 计算表达式值
- C++二进制导出到Excel代码
- Joomla模块学习之后台mod_feed模块
- Struts2重复提交的操作
- PHP - this,self,parent三个关键字之间的区别
- 从面试的过程可以看出一个公司的水平
- 程序员歌.一剂心灵的良药(共勉)
- 学习Mobile开发的网站,持续更新中……
- eclipse tomcat debug调试
- dos