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模板設計語法規則。本文章是入門帖,就寫到這裏。

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