資源簡介
使用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?“