一个极度简单的写Excel文件实现
2015-08-14 17:07
459 查看
在网上看见一个C#写Excel的实现,我改成C++了,希望能对大家有所帮助。
#include <stdio.h>
#include <string.h>
typedef unsigned short ushort;
class ExcelWriter
{
private:
FILE *pf;
void WriteArray(const void *value, ushort len)
{
if (pf)
fwrite(value, 1, len, pf);
}
public:
ExcelWriter() { pf = 0; }
~ExcelWriter() { if (pf) fclose(pf); }
void WriteCell(ushort row, ushort col, const char *value)
{
ushort iLen = (ushort)strlen(value);
ushort clData[] = { 0x0204, ushort(8 + iLen), row, col, 0, iLen };
WriteArray(clData, 12);
WriteArray(value, iLen);
}
void WriteCell(ushort row, ushort col, int value)
{
ushort clData[] = { 0x027E, 10, row, col, 0 };
WriteArray(clData, 10);
int iValue = (value << 2) | 2;
WriteArray(&iValue, 4);
}
void WriteCell(ushort row, ushort col, double value)
{
ushort clData[] = { 0x0203, 14, row, col, 0 };
WriteArray(clData, 10);
WriteArray(&value, 8);
}
void WriteCell(ushort row, ushort col)
{
ushort clData[] = { 0x0201, 6, row, col, 0x17 };
WriteArray(clData, 10);
}
bool BeginWrite(const char *fileName)
{
pf = fopen(fileName, "wb+");
if (!pf) return false;
ushort clBegin[] = { 0x0809, 0x08, 0x0, 0x10, 0x0, 0x0 };
WriteArray(clBegin, 12);
return true;
}
void EndWrite()
{
ushort clEnd[] = { 0x0A, 0x0 };
WriteArray(clEnd, 4);
fclose(pf);
pf = 0;
}
};
int main()
{
ExcelWriter writer;
writer.BeginWrite("F:/demo.xls");
writer.WriteCell(0, 0, "ExcelWriter Demo");
writer.WriteCell(1, 0, "int");
writer.WriteCell(1, 1, 10);
writer.WriteCell(2, 0, "double");
writer.WriteCell(2, 1, 1.5);
writer.WriteCell(3, 0, "empty");
writer.WriteCell(3, 1);
writer.EndWrite();
return 0;
}
#include <stdio.h>
#include <string.h>
typedef unsigned short ushort;
class ExcelWriter
{
private:
FILE *pf;
void WriteArray(const void *value, ushort len)
{
if (pf)
fwrite(value, 1, len, pf);
}
public:
ExcelWriter() { pf = 0; }
~ExcelWriter() { if (pf) fclose(pf); }
void WriteCell(ushort row, ushort col, const char *value)
{
ushort iLen = (ushort)strlen(value);
ushort clData[] = { 0x0204, ushort(8 + iLen), row, col, 0, iLen };
WriteArray(clData, 12);
WriteArray(value, iLen);
}
void WriteCell(ushort row, ushort col, int value)
{
ushort clData[] = { 0x027E, 10, row, col, 0 };
WriteArray(clData, 10);
int iValue = (value << 2) | 2;
WriteArray(&iValue, 4);
}
void WriteCell(ushort row, ushort col, double value)
{
ushort clData[] = { 0x0203, 14, row, col, 0 };
WriteArray(clData, 10);
WriteArray(&value, 8);
}
void WriteCell(ushort row, ushort col)
{
ushort clData[] = { 0x0201, 6, row, col, 0x17 };
WriteArray(clData, 10);
}
bool BeginWrite(const char *fileName)
{
pf = fopen(fileName, "wb+");
if (!pf) return false;
ushort clBegin[] = { 0x0809, 0x08, 0x0, 0x10, 0x0, 0x0 };
WriteArray(clBegin, 12);
return true;
}
void EndWrite()
{
ushort clEnd[] = { 0x0A, 0x0 };
WriteArray(clEnd, 4);
fclose(pf);
pf = 0;
}
};
int main()
{
ExcelWriter writer;
writer.BeginWrite("F:/demo.xls");
writer.WriteCell(0, 0, "ExcelWriter Demo");
writer.WriteCell(1, 0, "int");
writer.WriteCell(1, 1, 10);
writer.WriteCell(2, 0, "double");
writer.WriteCell(2, 1, 1.5);
writer.WriteCell(3, 0, "empty");
writer.WriteCell(3, 1);
writer.EndWrite();
return 0;
}
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 使用Python生成Excel格式的图片
- 关于指针的一些事情
- Excel 曝出 Power Query 安全漏洞,1.2 亿用户易受远程 DDE 攻击
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- excel vba 限制工作表的滚动区域代码
- excel vba 高亮显示当前行代码
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- SQL 导入导出Excel数据的语句
- 文本、Excel、Access数据导入SQL Server2000的方法
- C#导出数据到Excel文件的方法
- Vbscript生成Excel报表的常用操作总结
- C#实现导入CSV文件到Excel工作簿的方法
- C++联合体转换成C#结构的实现方法
- C#基于NPOI生成具有精确列宽行高的Excel文件的方法
- 总提示[Microsoft][ODBC Excel Driver] 数值字段溢出官方解决方法
- C#将Sql数据保存到Excel文件中的方法