最近有需求是:如何用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模板設計語法規則。本文章是入門帖,就寫到這裏。