2012-04-18 40 views

回答

7

如果您有參考在您的項目linqpad.exe,然後你可以用它做導出爲HTML

例如,

List<User> users = .... 
var filename = "test.html"; 

var writer = LINQPad.Util.CreateXhtmlWriter(); 
writer.Write(users); 

System.IO.File.WriteAllText(filename, writer.ToString()); 

// Open the file in excel 
Process.Start("Excel" , filename); 
+0

我無法將LinqPad移動到網絡服務器... – Alexandre 2012-04-18 22:33:21

3

Excel可以真正打開HTML文檔,改名爲 「XLS」 - 讀入HTML表結構爲Excel單元格。

不過,您必須將數據輸出爲HTML。

+0

但如何導出Ienumerable到HTML? – Alexandre 2012-04-18 17:43:10

0

我想添加這個解決方案下一個來搜索的人。我意識到這是一個古老的問題,但它是唯一一個在我的搜索中彈出的問題。

您可以在命令行上運行lprun。

lprun -format=html yourQuery.linq > output.xls 

只要是xls擴展名而不是xlsx,Excel就能夠打開html。如果您使用xlsx,它會抱怨它的格式不正確,無法打開。使用xls擴展它會提供一條消息,但它可以打開。

就像一個筆記- 我需要一個數據庫連接字符串的實體框架。我在linqpad.config中找到了它,並花了一段時間才弄清楚爲什麼lprun無法讀取它。您必須將連接字符串部分添加到lprun.exe.config,以便lprun可以使用它。

0

如上所述,LinqPad並不是真正導出爲Excel格式。但它會創建一個HTML文件,並使用Ms-Excel打開它。 (但對於下載文件,您不能強制客戶端如何打開文件,但可以將擴展名命名爲XLS,EXCEL將其打開並顯示警告)。

爲了生成HTML輸出,LinqPad使用hyperlinq庫。

void Main() 
{ 
    var filePath = Path.GetTempPath() + "output.html"; //or output.xls but with ms-excel warning 
    var iEnumerbleValue = Enumerable.Range(1, 500).Select(e => new { a = 1, b = e }); 
    File.WriteAllText(filePath, CreateHtml(iEnumerbleValue).ToString()); 
    Process.Start("EXCEL.EXE", filePath); 
} 



HDoc CreateHtml<T>(IEnumerable<T> coll) 
{ 
    var fields = typeof(T).GetProperties(); 

    return H.Doc(
      H.head(H.style()), 
      H.body(
      H.table(
       H.tbody(
        H.tr(fields.Select(f => H.th(f.Name))), 
        from item in coll 
        select H.tr(
         fields.Select(f => H.td(f.GetValue(item))) 
        ) 
         ) 
        ) 
       ) 
       ); 
} 
相關問題