2016-09-04 5 views

答えて

2

あなたは、これはあなたのテーブルであれば、単純に文字列を使用してHTMLファイルを作成することができます。

<table> 
<tr> 
    <th>Company</th> 
    <th>Contact</th> 
    <th>Country</th> 
</tr> 
<tr> 
    <td>Alfreds Futterkiste</td> 
    <td>Maria Anders</td> 
    <td>Germany</td> 
</tr> 
... 
</table> 

あなたはC#で書くことができます:

public struct HTMLTable 
{ 
    public string[] ColumnNames; 
    public TableColumn[] ColumnValues; 
    public HTMLTable(string[] columnNames, TableColumn[] columnValues) 
    { 
     ColumnNames = columnNames; 
     ColumnValues = columnValues; 
    } 
} 

public struct TableColumn 
{ 
    public string[] Values; 
    public TableColumn(string[] values) 
    { 
     Values = values; 
    } 
} 

public static class HTMLTableGenerator 
{ 
    public static string GenerateHTMLTable(HTMLTable Table) 
    { 
     StringBuilder Builder = new StringBuilder(); 
     Builder.Append("<table>\n <tr>\n"); 
     foreach (string ColumnName in Table.ColumnNames) 
      Builder.Append(" <th>" + ColumnName + "</th>\n"); 
     Builder.Append(" </tr>\n"); 
     foreach (var Column in Table.ColumnValues) 
     { 
      Builder.Append(" <tr>\n"); 
      foreach (string value in Column.Values) 
       Builder.Append(" <td>" + value + "</td>\n"); 
      Builder.Append(" </tr>\n"); 
     } 
     Builder.Append("</table>"); 
     return Builder.ToString(); 
    } 
} 

私は答えに直接これを書いていますそれは最高のaprroachではない、あなたはまた変更を加えるべきである(columnvaluesを一致させる、htmlインデントする、CSSを追加する)。

EDIT: これは実装のexpampleある:

string[] Columns = new string[] { "Company", "Contact", "Country" }; 
    TableColumn FirstColumn = new TableColumn(new string[] { "Alfreds Futterkiste", "Maria Anders", "Germany" }); 
    TableColumn[] TableColumns = new TableColumn[] { FirstColumn }; 
    HTMLTable Table = new HTMLTable(Columns, TableColumns);  
    string HTMLString = HTMLTableGenerator.GenerateHTMLTable(Table); 
    File.WriteAllText(@"C:\file.html", HTMLString); 

これは、最初の列の行を作成し、C:\file.htmlに保存しなければなりません。

私はちょうどそれをテストし、それは正常に動作します。

EDIT2:<a href="url">Name</a>

は、あなたがこれにTableColumn変更することができ、これを実装するには:

は、HTMLのリンクを追加するには

public struct TableColumn 
{ 
public Value[] Values; 
public TableColumn(Value[] values) 
{ 
    Values = values; 
} 
} 

をそして、この追加:

public struct Value 
{ 
public string Str; 
public bool IsURL; 
public Value(string str, bool isURL) 
{ 
    Str = str; 
    isURL = IsURL; 
} 
} 

を次に、ここに:

foreach (string value in Column.Values) 
     Builder.Append(" <td>" + value + "</td>\n"); 

に変更し、それを:

foreach (Value value in Column.Values) 
    { 
    if(value.IsURL) 
     Builder.Append(" <td><a href=" + value.Str + ">" + value.Str.SubString(0, 10) + "...</a></td>); 
    else Builder.Append(" <td>" + value.Str + "</td>"); 
    } 

EDIT3:出力フォルダ(つまりに、CSSのコードを追加したファイルにそのCSSを保存し、そのファイルに:ソリューション\プロジェクト\ binに\デバッグ\ style.cssに ")

その後HTMLTableGeneratorにこの機能を追加します。

private string GetStyle() 
    => File.ReadAllText(Application.Info.StartupPath + "\\style.css"); 
をそして GenerateHTMLTable()の初めにこの行を追加します。 (Builderの作成後):

Builder.Append(GetStyle()); 
+0

私のマシンに保存する方法は? –

+0

これは 'System.IO.File.WriteAllText(path、content);からファイルを作るための文字列です。答えが欲しいものなら、tick plaseをクリックしてください。 – null

+0

HTMLTableを作成し、作成したHTMLTableでGenrateHTMLTableを呼び出します。 –

関連する問題