• 大小: 11KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-06
  • 语言: C/C++
  • 标签: C++  excel  linux  

资源简介

使用VC/C++生成excel的方式有很多,但是绝大部分要么是简单的csv文件,要么需要COM并已经安装ms excel,局限性比较大。 我这里提供一种使用C++编写以html脚本的方式生成xls文件的方法。不使用任何非C++标准库,支持字体大小、颜色,单元格合并、背景色、边框等设置。 generate_excel.vcproj为在vs2005下的工程文件,如果需要在vc6或Linux等其他编译环境下使用只需新建工程将.h文件和.cpp文件导入即可编译。 generate_excel |------include | |----gen_excel_file.h | |----input_data.h | |------cpp | |----gen_excel_file.cpp //excel文件操作类 | |----input_data.cpp //生成虚拟数据 | |----main.cpp //调用gen_excel_file类 | |------iofiles | |----head.txt //格式定义文件 | |------generate_excel.vcproj //vc2005工程文件 |------表格.xls //输出文件

资源截图

代码片段和文件信息

//////////////////////////////////////////////////////////////////////////
//
// :gen_excel_file类,excel操作类
// by leo9909@csdn.net
//
//////////////////////////////////////////////////////////////////////////

#include “gen_excel_file.h“

using namespace generate_excel;

//--------------------------------------
gen_excel_file::gen_excel_file(void)
{
m_xls = NULL;
}

gen_excel_file::~gen_excel_file(void)
{
release();
}
gen_excel_file::gen_excel_file(const gen_excel_file &r)
{
}
gen_excel_file &gen_excel_file::operator=(const gen_excel_file &r)
{
return *this;
}
//----------------

void gen_excel_file::release()
{
if (m_xls)
{
fclose(m_xls);
m_xls = NULL;
}
}

//--------------------------------------
int gen_excel_file::create_file(const char * file_name)
{
release();
m_xls = fopen(file_name “w+“);

if (!m_xls)
return ERR_OPEN_FAILED;

//1.
fprintf(m_xls FILE_HTML_title);

//2.
if (load_xls_head())
return ERR_WRITE_HEAD_FAILED;


//3.
fprintf(m_xls FILE_BODY_title);
fprintf(m_xls FILE_TABLE_title);

return SUCCESS;
}

int gen_excel_file::load_xls_head()
{
CHECK_BUFFER_WITH_RETURN;
FILE *p_head = fopen(HEAD_TEXT_FILE “r“);

if (!p_head)
return ERR_WRITE_HEAD_FAILED;

copy_text(p_head m_xls);
fclose(p_head);

return SUCCESS;
}

int gen_excel_file::end_file()
{
CHECK_BUFFER_WITH_RETURN;
fprintf(m_xls “\n“);
fprintf(m_xls “\n“);
fprintf(m_xls “\n“);

release();
return SUCCESS;
}

//-------------------------------

void gen_excel_file::set_column_width(int span_cols int width_pels)
{
CHECK_BUFFER;

if (span_cols>1)
fprintf(m_xls “ yle=\‘mso-width-source:userset;mso-width-alt:%d\‘>\n“ width_pels span_cols width_pels*32);
else
fprintf(m_xls “ yle=\‘mso-width-source:userset;mso-width-alt:%d\‘>\n“ width_pels width_pels*32);
}

//----------------------------------------
void gen_excel_file::start_new_line(float height)
{
CHECK_BUFFER;
fprintf(m_xls “ yle=\‘mso-height-source:userset;height:%.2fpt\‘>\n“ height);
}

void gen_excel_file::end_curr_line()
{
CHECK_BUFFER;
fprintf(m_xls “ \n“);
}

//------------------------------------------
void gen_excel_file::fill_cell(const char* cell_tag int val)
{
CHECK_BUFFER;
fprintf(m_xls “%s%d\n“ cell_tag val);
}
void gen_excel_file::fill_cell(const char* cell_tag float val)
{
CHECK_BUFFER;
fprintf(m_xls “%s%f\n“ cell_tag val);
}
void gen_excel_file::fill_cell(const char* cell_tag const char* val)
{
CHECK_BUFFER;
fprintf(m_xls “%s%s\n“ cell_tag val);
}

//-----------------------------------------
int gen_excel_file::copy_text(FILE *pSource FILE *pDest)
{
if (!pSource && !pDest)
return FAILED;

char c;
while (!feof(pSource))
{
c = fgetc(pSource);
fputc(c pDest);
}

if(c == -1) //去掉来自源文件尾的文件结

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3123  2009-11-17 10:47  generate_excel\cpp\gen_excel_file.cpp

     文件       1201  2009-11-17 10:48  generate_excel\cpp\input_data.cpp

     文件       4991  2009-11-17 10:49  generate_excel\cpp\main.cpp

    ..A..H.     12800  2009-11-17 11:14  generate_excel\generate_excel.suo

     文件       4416  2009-11-17 10:11  generate_excel\generate_excel.vcproj

     文件       2465  2009-11-17 10:47  generate_excel\include\gen_excel_file.h

     文件        566  2009-11-17 10:47  generate_excel\include\input_data.h

     文件       8085  2009-11-16 15:58  generate_excel\iofiles\head.txt

     文件      16988  2009-11-17 11:14  generate_excel\表格.xls

     目录          0  2009-11-17 11:13  generate_excel\cpp

     目录          0  2009-11-17 11:13  generate_excel\include

     目录          0  2009-11-17 11:13  generate_excel\iofiles

     目录          0  2009-11-17 11:14  generate_excel

----------- ---------  ---------- -----  ----

                54635                    13


评论

共有 条评论