2011-08-19 55 views
3

我需要通過允許用戶下載它作爲PDF或Excel電子表格(任何一個都可以,都是完美的)來使數據庫中的信息可用。如何使用C#和MVC 2從SQL數據庫生成PDF/Excel文件?

我環顧了一堆選項,但我真的不能決定我應該使用哪一個,更不用說如果這些選項中的任何一個實際上有用。我發現的大多數選項都是將已經存在的HTML文件轉換爲PDF文件,這不是我所需要的。此外,它需要是免費。我的老闆們沒有給我預算花在這

我不知道我應該包括什麼其他信息在這裏。

那麼,任何幫助,非常感謝。如果您對缺少的信息有疑問,我會盡快發佈。我一整天都在這裏,所以我可以很快回復任何評論。

編輯:哦哇!巨大的感謝,傢伙,大量的迴應!我有很多想法。這是超級有用的。謝謝!

+0

你用什麼方法訪問數據庫?實體框架? Linq to SQL?數據表? – Jroc

+0

我使用實體框架來訪問數據庫。 –

回答

1

我通常建議我的客戶,在這種情況下的解決方法是使用SQL Server報表服務(SSRS)。您可以使用隨附的ReportViewer控件來生成PDF,Excel電子表格,XML文件,CSV文件等。如果您需要臨時報告,則還有一個Report Builder

除此之外,您可以使用OpenXml生成Excel電子表格,並且有大量PDF工具包可用。

+0

非常感謝這個建議。有很多答案,但最終這是我所追求的。花了比我希望能夠實現它的更多努力,但我認爲這是最好的選擇。它可能太好了。 –

0

您是否查看過Visual Studio的一部分的reportviewer控件?

它允許您以PDF或Excel格式導出報告。

0

如果你想走Excel路線,我會推薦這篇來自Stephen Walther的題爲ASP.NET MVC Tip #2 - Create a custom Action Result that returns Microsoft Excel Documents的文章。這使用了一種用Excel MIME類型編寫HTML文檔的舊技巧。這與流式處理本機Excel文件不同。如果你想將它剝離下來並將它變成一個更通用的文件,那麼將其轉換爲CSV文件是相當容易的。如果有可能出現逗號,請記住將所有字段加雙引號。

0

如果你的行爲不是太複雜,你可以使用CSV文件。 CSV代表逗號分隔值,它聽起來像。您可以使用逗號創建簡單的表格和列。例如,下面的行粘貼到文本文件:

heading1,heading2,heading3 
info1,info2,info3 
info1,info2,info3 

將文本文件另存爲.csv文件,瞧 - 一個Excel電子表格。顯然,構建這些循環對象集合非常容易。請注意,如果你需要任何複雜的文本格式等,那麼它不是最好的選擇。

5

如果你想生成一個Excel(或者也是一個Word),你可以使用openXml。您可以完全按照您想要的純代碼方式創建新文檔。

OpenXml SDK page

+0

+1 MSDN技術文檔非常冗長,我發現它們很難遵循。 [這個MSDN開發人員博客]更好的快速入門(http://blogs.msdn.com/b/chrisrae/archive/2011/08/18/creating-a-simple-xlsx-from-scratch-using-the-開放式XML-sdk.aspx) –

相關問題