C#写简单HTML报表

最近有需求是:如何用C#写好一个HTML文件。

本文例子是摄影测量空间后方交会程序报表的设计。

1、VTemplate下载使用

在下面网站上下载到VTemplate.Engine.dll 。C#引用导入。开头加上using VTemplate.Engine;

2、HTML模板制作

下面我所做的是简单空间后方交会报表的设计。用到HTML标签语言,下面有一些讲解。

<html>
<head>
    <title> 报表 </title>
</head>

<body>
    <p>
        <h1 align="center"><font color="red">空间后方交会结果报表</font></h1>
        <!--报表时间 -->
        <a href="spacerendezvous_report.html">spacerendezvous_report.html</a>

        <!--原始数据表 -->
        <h1><font size="4" color="red">原始数据表:</font></h1>

        <table style="width:80%;" bordercolor="#000000" align="center">
            <tbody>
                <tr>
                    <td>
                        点序号
                    </td>
                    <td>
                        地面点座标X
                    </td>
                    <td>
                        地面点座标Y
                    </td>
                    <td>
                        地面点座标z
                    </td>
                    <td>
                        像点座标x
                    </td>
                    <td>
                        像点座标y
                    </td>

                </tr>
                <vt:foreach from="$SpaceRendezvous_OriData" item="ControlPoint" index="i">
                    <tr>
                        <td>
                            {$:ControlPoint.Num}
                        </td>
                        <td>
                            {$:ControlPoint.gcpX}米
                        </td>
                        <td>
                            {$:ControlPoint.gcpY}米
                        </td>
                        <td>
                            {$:ControlPoint.gcpZ}米
                        </td>
                        <td>
                            {$:ControlPoint.x}毫米
                        </td>
                        <td>
                            {$:ControlPoint.y}毫米
                        </td>
                    </tr>
                </vt:foreach>

            </tbody>
        </table>
        <br />

        <!--迭代过程 -->
    <h1><font size="4" color="red">迭代过程:</font></h1>
 <vt:foreach from="$SpaceRendezvous_Tempdata" item="SpaceRendezvous_Tempdata" index="i">
    <table style="width:80%;" bordercolor="#000000" align="center">
        <tbody>
            <tr>
                <td>
                    Xs
                </td>
                <td>
                    Ys
                </td>
                <td>
                    Zs
                </td>
                <td>
                    fai
                </td>
                <td>
                    omi
                </td>
                <td>
                    ka
                </td>
            </tr>
           
                <tr>
                    <td>
                        {$:SpaceRendezvous_Tempdata.Xs}米
                    </td>
                    <td>
                        {$:SpaceRendezvous_Tempdata.Ys}米
                    </td>
                    <td>
                        {$:SpaceRendezvous_Tempdata.Zs}米
                    </td>
                    <td>
                        {$:SpaceRendezvous_Tempdata.fai}rad
                    </td>
                    <td>
                        {$:SpaceRendezvous_Tempdata.omi}rad
                    </td>
                    <td>
                        {$:SpaceRendezvous_Tempdata.ka}rad
                    </td>
                </tr>
		<p align="left"><font size="3">第{$:i}次迭代计算的外方位元素:</p>
            </vt:foreach>
        </tbody>
    </table>
	
	<!--最终结果 -->
    <h1><font size="4" color="red">最终结果:</font></h1>
	
 <!-- <vt:foreach from="$SpaceRendezvous_ResultData" item="SpaceRendezvous_Results" index="i"> -->

    <table style="width:80%;" bordercolor="#000000" align="center">
        <tbody>
            <tr>
                <td>
                    Xs
                </td>
                <td>
                    Ys
                </td>
                <td>
                    Zs
                </td>
                <td>
                    fai
                </td>
                <td>
                    omi
                </td>
                <td>
                    ka
                </td>
				<td>
                    m0
                </td>
            </tr>
           
                <tr>
                    <td>
                        {$:SpaceRendezvous_Results.Xs}米
                    </td>
                    <td>
                        {$:SpaceRendezvous_Results.Ys}米
                    </td>
                    <td>
                        {$:SpaceRendezvous_Results.Zs}米
                    </td>
                    <td>
                        {$:SpaceRendezvous_Results.fai}rad
                    </td>
                    <td>
                        {$:SpaceRendezvous_Results.omi}rad
                    </td>
                    <td>
                        {$:SpaceRendezvous_Results.ka}rad
                    </td>
				    <td>
                        {$:SpaceRendezvous_Results.m0}
                    </td>
                </tr>				
         <!-- </vt:foreach> -->   						
        </tbody>
    </table>
    </p>
</body>
</html>

上述代码生成的结果如下图所示:

VTemplate使用的地方是在地面点座标通过C#导入到HTML。并通过VTemplate的语法规则显示出来。在使用迭代循环的时候,采用的语法则是使用<vt:foreach from="$SpaceRendezvous_Tempdata" item="SpaceRendezvous_Tempdata" index="i">  迭代内容  </vt:foreach> 语法规则。其中的SpaceRendezvous_Tempdata 则是C#中的类。具体HTML语法可以在网上逐步学习HTML的教程一点一点添加学习。

3、C#接口控制

在C#接口处,需要定义SpaceRendezvous_Tempdata类元素:

   class SpaceRendezvous_Tempdata
    {
        public double Xs { get; set; }
        public double Ys { get; set; }
        public double Zs { get; set; }
        public double fai { get; set; }
        public double omi { get; set; }
        public double ka { get; set; }

        public double dXs { get; set; }
        public double dYs { get; set; }
        public double dZs { get; set; }
        public double dfai { get; set; }
        public double domi { get; set; }
        public double dka { get; set; }
    }

并在输出的位置用上代码:

TemplateDocument SpaceRendezvous_document = new TemplateDocument(System.Windows.Forms.Application.StartupPath + "\\SpaceRendezvous_Report.html", Encoding.UTF8, TemplateDocumentConfig.Default);
            SpaceRendezvous_document.Variables.SetValue("SpaceRendezvous_OriData", SpaceRendezvous_ControlPoints);
            SpaceRendezvous_document.Variables.SetValue("SpaceRendezvous_Tempdata", SpaceRendezvous_Tempdata);
            SpaceRendezvous_document.Variables.SetValue("SpaceRendezvous_ResultData", SpaceRendezvous_Results);
            SpaceRendezvous_document.RenderTo(System.Windows.Forms.Application.StartupPath + "\\后方交会报表.html", Encoding.UTF8);

其中SpaceRendezvous_ControlPoints、SpaceRendezvous_Tempdata、SpaceRendezvous_Results分别是

List<SpaceRendezvous_OriData>、List<SpaceRendezvous_Tempdata>、List<SpaceRendezvous_ResultData>类型。点位可以自己通过List.Add()函数设置添加。SpaceRendezvous_document.RenderTo(String Path,, Encoding.UTF8)输出即可。

4、结果显示

5、总结

如果想利用C#做一个HTML文件。首先我们要自己能做一个(利用HTML语言设计出)的理想文件。里面的数据则是我们需要从C#导入到HTML模板中,数据导入操作等过程则是需要我们VTemplate库文件。下面需要解决的是我们如何要用VTemplate的语法规则将C#数据导入到HTML模板。那么就需要看具体的需求,如果需要用到迭代(比如我的需求是体现多次迭代的过程),则所用的VTemplate的HTML语法为<vt:foreach from="$SpaceRendezvous_Tempdata" item="SpaceRendezvous_Tempdata" index="i">  迭代内容  </vt:foreach> (不再赘述)。具体则需要看自己的需求,在网上搜索更多的VTemplate的HTML模板设计语法规则。本文章是入门帖,就写到这里。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章