我試圖創建一個接受通用List<T>
的函數並迭代返回excel文件byte[]
的列表。該功能需要能夠確定對象的屬性。所以如果我通過List<person>
和人有屬性的第一,最後,年齡等我需要能夠確定屬性名稱,以創建Excel列標題,然後我需要迭代列表分配屬性值的列單元格。任何人都可以指向我的示例代碼與List<T>
在通用函數中使用?幫助將泛型列表<T>轉換爲Excel電子表格
4
A
回答
9
另外:用於按已知順序恢復列:是沒有爲成員定義的順序,除了您創建的順序。例如(from MSDN):
GetProperties方法不會以特定順序(例如字母或聲明順序)返回屬性。您的代碼不得依賴於返回屬性的順序,因爲順序會有所不同。
如果您不需要依賴訂單,無論是反射或TypeDescriptor會做;例如(注意,這寫TSV文本,而不是byte[]
- 我的解釋是,這個問題是獲得數據,而不是寫了Excel):
static void WriteTsv<T>(this IEnumerable<T> data, TextWriter output)
{
PropertyDescriptorCollection props = TypeDescriptor.GetProperties(typeof(T));
foreach (PropertyDescriptor prop in props)
{
output.Write(prop.DisplayName); // header
output.Write("\t");
}
output.WriteLine();
foreach (T item in data)
{
foreach (PropertyDescriptor prop in props)
{
output.Write(prop.Converter.ConvertToString(
prop.GetValue(item)));
output.Write("\t");
}
output.WriteLine();
}
}
如果需要順序,你會需要:
- 傳中(例如,作爲一個
params string[] propertyNames
) - 使用上的屬性的屬性
- 使用字母
以上TypeDescriptor
方法具有以下優點:(超過GetType().GetProperties()
)認爲:
- 它與自定義對象模型(
DataView
,例如,如果你使用IList
) - 你可以調整的實施性能 - 例如HyperDescriptor(如果您正在拍攝這張照片很有用)
0
最簡單的方法可能是convert your List to a DataTable,然後convert the DataTable to an Excel spreadsheet。
第二個鏈接將電子表格直接寫入ASP.NET響應,這可以很容易地適應返回一個字節[]。
0
使用集合支持的接口,如IEnumerable
:
public byte[] Process(IEnumerable input) {
foreach (var elem in input) {
foreach (PropertyInfo prop in elem.GetType().GetProperties()) {
Object value = prop.GetValue(elem, null);
// add value to byte[]
}
}
return bytes;
}
相關問題
- 1. 將excel電子表格轉換爲HTML
- 2. 將Excel電子表格轉換爲c#
- 3. 將DataTable轉換爲泛型列表?
- 4. C#泛型列表轉換爲類實現列表<T>
- 5. 將localizable.strings轉換爲電子表格?
- 6. 將表格轉換爲PHP:轉換幫助
- 7. Android類型不匹配的幫助。將ArrayList轉換爲列表?
- 8. 將Excel電子表格轉換爲PHP腳本
- 9. 將excel電子表格轉換爲MySql數據庫
- 10. 將Google Drive電子表格轉換爲Excel的Java代碼
- 11. 使用Apache POI庫將Excel電子表格轉換爲HTML
- 12. 將Excel電子表格轉換爲數組
- 13. 使用vb.net將excel電子表格轉換爲html?
- 14. 將java文件轉換爲excel電子表格
- 15. 將泛型列表轉換爲非泛型列表有什麼含義?
- 16. 泛型列表轉換
- 17. 將.NET泛型列表轉換爲F#列表
- 18. 將Excel 2010電子表格的單個工作表轉換爲.csv格式
- 19. Java泛型 - 轉換列表<object>列出<T>
- 20. 將Google電子表格轉換爲HTML表格
- 21. PHP:將HTML表格轉換爲電子表格?
- 22. 在Excel中將Excel電子表格解析爲模型
- 23. 將Excel電子表格從一種格式轉換爲另一種格式
- 24. 如何將電子表格列轉換爲使用Java的行
- 25. 將泛型類型轉換爲列表框控件
- 26. 對象列表到Excel電子表格?
- 27. Excel電子表格轉換爲UserForm VBA問題
- 28. 將電子表格數據轉換爲網絡表單
- 29. 泛型子列表
- 30. php電子郵件表格幫助如何幫助
我認爲凱文是指「...屬性名稱,以創建...」是「...屬性名,所以我可以創造... ...」,而不是一個排序列表物業名稱:) – 2009-12-02 07:02:38
D'oh!我感覺很慢......我會把它保持原樣,因爲我認爲如果你期望每次都有相同的結果,這仍然是一個有趣的觀點。謝謝。 – 2009-12-02 07:03:29
+1良好且完整的答案。 – eglasius 2009-12-02 07:06:46