需生成格式丰富的报告
哪里有这方面的资料?谢谢!!
最好有源代码类

解决方案 »

  1.   

    呵呵,我手工写的如下:
    CString path;
    char filter[] = "Web Files(*.htm,*.html) | *.htm;*.html||";
    CFileDialog fd(FALSE,".htm",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,filter,NULL);
    if(fd.DoModal() == IDOK)
    {
    path = fd.GetPathName();
    } CString ips,ipe;
    m_ipstart.GetWindowText(ips);
    m_ipend.GetWindowText(ipe); CStdioFile file;
    if(file.Open(path, CFile::modeCreate|CFile::modeWrite))
    {
    CString temp;
    file.Write("",0);
    file.WriteString("<html>\n<head>\n<title>网络扫描结果(ALF MODERN STUDIO)</title>\n</head>\n");
    file.WriteString("<body>\n<p><font size=4 face=宋体><b>网络扫描结果</b></font></p>\n");
    temp.Format("<p><font face=宋体 size=2>(从 %s 到 %s )</font></p>\n",ips,ipe);
    file.WriteString(temp);
    file.WriteString("<table border=1 width=100% cellspacing=0 bordercolor=#C0C0C0>\n<tr>\n");
    file.WriteString("<td width=25% bgcolor=#E8E8E8><font size=2>IP地址</font></td>\n");
    file.WriteString("<td width=35% bgcolor=#E8E8E8><font size=2>机器名称</font></td>\n");
    file.WriteString("<td width=30% bgcolor=#E8E8E8><font size=2>MAC地址</font></td>\n");
    file.WriteString("<td width=10% bgcolor=#E8E8E8><font size=2>状态</font></td>\n</tr>\n"); for(int i=0;i<ItemCount;i++)
    {
    file.WriteString("<tr>\n");
    if(m_list.GetItemText(i,0) != "")
    {
    temp.Format("<td width=25%% bgcolor=#FFFFFF><font size=2> %s</font></td>\n",m_list.GetItemText(i,0));
    }
    else
    {
    temp.Format("<td width=25%% bgcolor=#FFFFFF><font size=2>&nbsp</font></td>\n");
    }
    file.WriteString(temp);
    if(m_list.GetItemText(i,1) != "")
    {
    temp.Format("<td width=35%% bgcolor=#FFFFFF><font size=2> %s</font></td>\n",m_list.GetItemText(i,1));
    }
    else
    {
    temp.Format("<td width=35%% bgcolor=#FFFFFF><font size=2>&nbsp</font></td>\n");
    }
    file.WriteString(temp);
    if(m_list.GetItemText(i,2) != "")
    {
    temp.Format("<td width=30%% bgcolor=#FFFFFF><font size=2> %s</font></td>\n",m_list.GetItemText(i,2));
    }
    else
    {
    temp.Format("<td width=30%% bgcolor=#FFFFFF><font size=2>&nbsp</font></td>\n");
    }
    file.WriteString(temp);
    if(m_list.GetItemText(i,3) != "")
    {
    temp.Format("<td width=10%% bgcolor=#FFFFFF><font size=2> %s</font></td>\n",m_list.GetItemText(i,3));
    }
    else
    {
    temp.Format("<td width=10%% bgcolor=#FFFFFF><font size=2>&nbsp</font></td>\n");
    }
    file.WriteString(temp);
    file.WriteString("</tr>\n");
    } file.WriteString("</table>\n<br>");
    CString time,sy,sm,sd;
    GetYMD(sy,sm,sd);
    time.Format("<font size=2>创建时间:%s年%s月%s日</font>\n",sy,sm,sd);
    file.WriteString(time);
    file.WriteString("</body>\n</html>");

    file.Close();
    } file.Close();
      

  2.   

    数据一xml生成
    表现用xslt,这样可以作到动态
      

  3.   

    生成HTML表格的程序
    http:\\5inet.cn\web\silverplume\temp\html.rar
      

  4.   

    我用过一种方法.首先做一个网页模板[就是空的Html表格]
    在网页前面用注释标上生成表格的Html语句.
    然后用VC读这个文件,再写入一个新文件 就可以生成一个Htm表格文件.虽然笨一点,却很好用[可以在模板中自定义任何格式,生成的报表可以被Excel等直接读取],很方便又不用任何控件. 也不是很费时间. ^_^
      

  5.   

    这是最简单的模板<!--BlueSnow:标题开始 = <title>-->
    <!--BlueSnow:标题结束 = </title>-->
    <!--BlueSnow:表头开始 = <p align="center" class="Title">-->
    <!--BlueSnow:表头结束 = </p>-->
    <!--BlueSnow:表行开始 = <tr>-->
    <!--BlueSnow:表行结束 = </tr>-->
    <!--BlueSnow:表列开始 = <td align="center" valign="middle">-->
    <!--BlueSnow:表列结束 = </td>-->
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <!--BlueSnow:标题--><style type="text/css">
    <!--
    .Title {
    font-family: "宋体_GB2312";
    font-size: 24px;
    font-weight: bold;
    color: #000000;
    }
    -->
    </style>
    </head><body>
    <!---->
    <!--BlueSnow:表头--><table width="100%" border="1" cellpadding="1" cellspacing="1">
    <!--BlueSnow:表格--></table>
    </body>
    </html>
      

  6.   

    ......略......
    //////////////////////////////////////////////////////////////////////// if ( ! fileTableTemplate.Open( "C:\\Table.htm" , CFile::modeReadWrite ) )
    {
    MessageBox("模板文件打开失败!");
    return;
    }
    if ( fileTableHtml.Open( 
    "C:\\TableHtml.htm",CFile::modeCreate|CFile::modeWrite|CFile::typeText ) == 0 )
    {
    MessageBox("模板文件建立失败!");
    return;
    }
    //////////////////////////////////////////////////////////////////////////////////
    // 标题开始
    fileTableTemplate.ReadString( strDataLine );
    strTableNameStart = strDataLine.Mid( 24 , strDataLine.GetLength() - 27 ) ;
    // 标题结束
    fileTableTemplate.ReadString( strDataLine );
    strTableNameEnd = strDataLine.Mid( 24 , strDataLine.GetLength() - 27 ) + "\n";
    // 表头开始
    fileTableTemplate.ReadString( strDataLine );
    strTableTitleStart = strDataLine.Mid( 24 , strDataLine.GetLength() - 27 ) ;
    // 表头结束
    fileTableTemplate.ReadString( strDataLine );
    strTableTitleEnd = strDataLine.Mid( 24 , strDataLine.GetLength() - 27 ) + "\n";
    // 表行开始
    fileTableTemplate.ReadString( strDataLine );
    strTableRowStart = strDataLine.Mid( 24 , strDataLine.GetLength() - 27 ) ;
    // 表行结束
    fileTableTemplate.ReadString( strDataLine );
    strTableRowEnd = strDataLine.Mid( 24 , strDataLine.GetLength() - 27 ) + "\n";
    // 表列开始
    fileTableTemplate.ReadString( strDataLine );
    strTableColStart = strDataLine.Mid( 24 , strDataLine.GetLength() - 27 ) ;
    // 表列结束
    fileTableTemplate.ReadString( strDataLine );
    strTableColEnd = strDataLine.Mid( 24 , strDataLine.GetLength() - 27 ) + "\n";
    //////////////////////////////////////////////////////////////////////////////////
    while ( fileTableTemplate.ReadString( strDataLine ) )
    {
    nFind = 0 ;
    if ( strDataLine.IsEmpty() ) continue;
    strDataLine = strDataLine + "\n";
    fileTableHtml.WriteString( strDataLine );
    //////////////////////////////////////////////////////////////////////////////
    if ( strDataLine == "<!--BlueSnow:标题-->\n" )
    {
    strNewDataLine = strTableNameStart + "统计报表" + strTableNameEnd;
    fileTableHtml.WriteString(strNewDataLine);
    }
    //////////////////////////////////////////////////////////////////////////////
    if ( strDataLine == "<!--BlueSnow:表头-->\n" )
    {
    strNewDataLine = strTableTitleStart + m_strScopeName + "不同项目方法,实验室数及所占比例" + strTableTitleEnd;
    fileTableHtml.WriteString(strNewDataLine);
    }
    //////////////////////////////////////////////////////////////////////////////
    if ( strDataLine == "<!--BlueSnow:表格-->\n" )
    {
    //////////////////////////////////////////////////////////////////////////
    // 小行字
    for ( int i = 0; i < m_strArrayBatchID.GetSize(); i++)
    {
    strTemp = strTemp + m_strArrayBatchID.GetAt(i) + ";";
    }
    fileTableHtml.WriteString("批号:" + strTemp );
    //////////////////////////////////////////////////////////////////////////
    // 表格题头
    strNewDataLine = strTableColStart + "项目" + strTableColEnd;
    fileTableHtml.WriteString(strNewDataLine);
    strNewDataLine = strTableColStart + "批号" + strTableColEnd;
    fileTableHtml.WriteString(strNewDataLine);
    strNewDataLine = strTableColStart + "方法" + strTableColEnd;
    fileTableHtml.WriteString(strNewDataLine);
    strNewDataLine = strTableColStart + "实验室数" + strTableColEnd;
    fileTableHtml.WriteString(strNewDataLine);
    strNewDataLine = strTableColStart + "所占比例(%)" + strTableColEnd;
    fileTableHtml.WriteString(strNewDataLine);
    //////////////////////////////////////////////////////////////////////////
    ......略......
      

  7.   

    使用Xslt样式,输出为html,输入为xml用xml形式做数据就容易多了,而且改了xslt就有不同的效果,可以定制主程序又不要改的不过你又得专门搞个动态匹配的程序(可以以后在用啊)让他们工作。