资源简介

可以快速批量生成HTML/XML/WORD文档/EXCEL文档的简易模板库,模板库为C语言实现,非常简单,只有一个文件。能够按照模板格式生成HTML/XML/WORD文档/EXCEL文档等等各种文档。比如,需要批量生成报表、单据、静态网页、配置文件等等,都可以编辑一个模板,然后用此代码快速批量生成。

资源截图

代码片段和文件信息

/*++
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 “linklist.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 “