一个极度简单的写Excel文件实现

来源:互联网 发布:下载会声会影软件 编辑:程序博客网 时间:2024/05/21 08:04

在网上看见一个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;}


0 0
原创粉丝点击