資源簡介
可以快速批量生成HTML/XML/WORD文檔/EXCEL文檔的簡易模板庫,模板庫為C語言實現(xiàn),非常簡單,只有一個文件。能夠按照模板格式生成HTML/XML/WORD文檔/EXCEL文檔等等各種文檔。比如,需要批量生成報表、單據(jù)、靜態(tài)網(wǎng)頁、配置文件等等,都可以編輯一個模板,然后用此代碼快速批量生成。

代碼片段和文件信息
/*++
Copyright(C)?Fang.
?
Module?Name:
????htmtmpl.c
????
Abstract:
?
????HTML?Template?helps?CGI?C?to?easy?manipulate?HTML?code?output.
????
Author:
????Fang(fangguicheng@21cn.com)?4/13/2007
?
Revision?History:
--*/
#include?
#include?
#include?
#include?
#include?“l(fā)inklist.h“
/************************************************************************/
/*?Type?declaration.????????????????????????????????????????????????????*/
/************************************************************************/
#define?MAX_HT_FILE_SIZE??(32*1024)
#define?MAX_HT_NAME_SIZE??32
#define?HT_TYPE_TEXT??0
#define?HT_TYPE_VAR???1
#define?HT_TYPE_BLOCK?2
typedef?struct?_HT_BLOCK
{
????LIST_ENTRY?Node;
????int??Type;
????char?Name[MAX_HT_NAME_SIZE+1];
????union
????{
????????char*?Text;
????????char*?Value;
????????LIST_ENTRY?SubBlockList;
????};
}HT_BLOCK?*PHT_BLOCK;
#define?HT_OUTPUT_NULL??????0
#define?HT_OUTPUT_STDOUT????1
#define?HT_OUTPUT_STRING????2
/************************************************************************/
/*?Global?variables.????????????????????????????????????????????????????*/
/************************************************************************/
LIST_ENTRY?MainList;
/************************************************************************/
/*?Help?functions.??????????????????????????????????????????????????????*/
/************************************************************************/
char*?LoadFile(char*?File?int*?Length)
{
????FILE*?HtmFile;
????char*?Buffer;
????int?FileSize;
????/*
?????*??Read?file?to?buffer.
?????*/
????HtmFile?=?fopen(File?“r+b“);
????if(HtmFile?==?NULL)
????????return?NULL;
????fseek(HtmFile?0?SEEK_END);
????FileSize?=?ftell(HtmFile);
????if(FileSize?==?-1?||?FileSize?>?MAX_HT_FILE_SIZE)
????{
????????fclose(HtmFile);
????????return?NULL;
????}
????Buffer?=?(char*)malloc(FileSize+1);
????if(Buffer?==?NULL)
????{
????????fclose(HtmFile);
????????return?NULL;
????}
????fseek(HtmFile?0?SEEK_SET);
????if(fread(Buffer?1?FileSize?HtmFile)?!=?(size_t)FileSize)
????{
????????fclose(HtmFile);
????????free(Buffer);
????????return?NULL;
????}
????fclose(HtmFile);
????Buffer[FileSize]?=?‘\0‘;
????*Length?=?FileSize;
????return?Buffer;
}
int?DeterminType(char*?Buffer?int?Length)
{
????if(Buffer[0]?==?‘{‘)
????????return?HT_TYPE_VAR;
????if(Length?>?9?&&?memcmp(Buffer?“