我需要解析一個非常簡單的csv文件,它代表7列和3行。是否有任何內置的.Net來做到這一點,或者我應該手動嗎?有人可以推薦一個CSV到Html Table Generator嗎?
1
A
回答
0
原來,這工作:(好吧, '這' 是一個近似值)
protected void Page_Load(object sender, EventArgs e)
{
List<List<string>> data = GetListFromCsv(this.DataFile);
Table table = GetHtmlTable(data);
this.plcDataTable.Controls.Add(table);
}
// get list of 'rows' (event though each row is just a list of strings)
public static List<List<string>> GetListFromCsv(string file)
{
String[] csvData = File.ReadAllLines(file);
List<string> rowList = new List<string>();
if (csvData.Length == 0)
{
throw new Exception("CSV File Appears to be Empty");
}
var rows = (from r in csvData
select r.Split(',').ToList()
).ToList();
return rows;
}
private Table GetHtmlTable(List<List<string>> dataTable)
{
List<TableRow> rows = new List<TableRow>();
rows.AddRange(GetListOfRows(dataTable));
Table table = new Table();
table.Rows.AddRange(rows.ToArray());
return table;
}
// convert the 'rows' to real rows.
public static IEnumerable<TableRow> GetListOfRows(List<List<string>> table)
{
var rows = new List<TableRow>();
foreach (var row in table
{
rows.Add(GetTableRow(row));
}
return rows;
}
private static TableRow GetTableRow(List<string> rows)
{
TableRow row = new TableRow();
row.Cells.Add(GetColumnOneCell(rows));
row.Cells.AddRange(GetValueCells(rows).ToArray());
return row;
}
2
使用類似FileHelpers library的文件加載文件並將其轉換爲數據表,並使用中繼器以所需的html格式發送行。
0
怎麼樣:
public static DataTable csvToDataTable(string file, bool isRowOneHeader)
{
DataTable csvDataTable = new DataTable();
//no try/catch - add these in yourselfs or let exception happen
String[] csvData = File.ReadAllLines(HttpContext.Current.Server.MapPath(file));
//if no data in file ‘manually’ throw an exception
if (csvData.Length == 0)
{
throw new Exception(」CSV File Appears to be Empty」);
}
String[] headings = csvData[0].Split(',');
int index = 0; //will be zero or one depending on isRowOneHeader
if(isRowOneHeader) //if first record lists headers
{
index = 1; //so we won’t take headings as data
//for each heading
for(int i = 0; i < headings.Length; i++)
{
//replace spaces with underscores for column names
headings[i] = headings[i].Replace(」 「, 「_」);
//add a column for each heading
csvDataTable.Columns.Add(headings[i], typeof(string));
}
}
else //if no headers just go for col1, col2 etc.
{
for (int i = 0; i < headings.Length; i++)
{
//create arbitary column names
csvDataTable.Columns.Add(」col」+(i+1).ToString(), typeof(string));
}
}
//populate the DataTable
for (int i = index; i < csvData.Length; i++)
{
//create new rows
DataRow row = csvDataTable.NewRow();
for (int j = 0; j < headings.Length; j++)
{
//fill them
row[j] = csvData[i].Split(’,')[j];
}
//add rows to over DataTable
csvDataTable.Rows.Add(row);
}
//return the CSV DataTable
return csvDataTable;
}
0
的PowerShell:
ps> import-csv foo.csv | convertto-html foo.html
;-)
相關問題
- 1. 我可以得到推薦人嗎?
- 2. 有人可以推薦一個好的U3D庫嗎?
- 3. 任何人都可以推薦一個DataMatrix解碼庫嗎?
- 4. 任何人都可以推薦一個好的PHP HTML清潔劑嗎?
- 5. 有人可以推薦一個更好的替代InternetOpenUrl(..)?
- 6. 有人可以推薦codeigniter的視頻教程嗎?
- 7. 有人可以推薦使用Capistrano的Rails3部署教程嗎?
- 8. 有人可以推薦Delphi的顏色選擇器組件嗎?
- 9. 任何人都可以推薦一個CMS以適應以下?
- 10. 任何人都可以推薦一本Silverlight 2書嗎?
- 11. 任何人都可以推薦一本Dojo和JSON書嗎?
- 12. 鏈接推薦人在HTML
- 13. 有人可以推薦一款易於定製的富文本編輯器嗎?
- 14. Eclipse RCP/RAP:任何人都可以推薦一個數據綁定框架嗎?
- 15. 任何人都可以推薦一個在線代碼編輯器嗎?
- 16. 任何人都可以推薦一個好的java庫來反思視頻嗎?
- 17. 任何人都可以推薦一個開源的實時網絡堆棧嗎?
- 18. 任何人都可以推薦一個條形碼web服務器控件嗎?
- 19. 任何人都可以推薦一個合成數據生成器嗎?
- 20. 任何人都可以推薦一個C++ std :: map替換容器嗎?
- 21. 任何人都可以推薦一個免費的xslt工具嗎?
- 22. 任何人都可以推薦一個用Eclipse設置Hibernate3的好參考嗎?
- 23. 任何人都可以推薦一個php關鍵字密碼?
- 24. 有人可以推薦一個可靠的懶加載JS插件的IE6?
- 25. 任何人都可以推薦VIN解碼服務嗎?
- 26. 任何人都可以推薦ASP.NET MVC羣聊控件嗎?
- 27. 任何人都可以推薦CodeIgniter 1.7.x的認證庫嗎?
- 28. 任何人都可以推薦外匯交易API嗎?
- 29. 有人可以推薦一個好的Unix系統日誌*客戶*庫的Java?
- 30. 有人可以推薦一個PHP的MySQL評級系統,我可以添加到我的網站
不包括引用字符串。 – 2010-05-14 20:58:11