2011-01-07 92 views

回答

2

您將不得不手動解析文件。也許是這樣的:

string data = System.IO.File.ReadAllText("myfile.txt"); 

DataRow row = null; 
DataSet ds = new DataSet(); 
DataTable tab = new DataTable(); 

tab.Columns.Add("First"); 
tab.Columns.Add("Second"); 

string[] rows = data.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries); 
foreach (string r in rows) 
{ 
    string[] columns = r.Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries); 
    if (columns.Length <= tab.Columns.Count) 
    { 
     row = tab.NewRow(); 

     for (int i = 0; i < columns.Length; i++) 
      row[i] = columns[i]; 

     tab.Rows.Add(row); 
    } 
} 

ds.Tables.Add(tab); 

UPDATE

如果你不知道有多少列在文本文件中,你可以修改我原來的例子爲以下(假設列的數目是恆定所有行):

// ... 
string[] columns = r.Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries); 
if (tab.Columns.Count == 0) 
{ 
    for(int i = 0; i < columns.Length; i++) 
     tab.Columns.Add("Column" + (i + 1)); 
} 

if (columns.Length <= tab.Columns.Count) 
{ 
// ... 

同時刪除初始創建的表列的:

// tab.Columns.Add("First"); 
// tab.Columns.Add("Second") 

- 帕維

+0

感謝您的幫助,但我可以做什麼時,我不知道我的文本文件中有多少列? – Gold 2011-01-07 09:10:37

2

肯定有,

定義DataTable,添加DataColumn與你想要的數據類型,

ReadLine文件,通過選項卡拆分值,並添加每個值作爲DataRow通過調用NewRow到DataTable。

有一個在MSDN一個很好的示例代碼,看一看,然後按照步驟

1

是,動態創建數據TABEL,請參閱this article如何對

逐行讀取文件線和將這些值添加到您的數據表中,請參閱this article如何讀取文本文件

0

試試這個

private DataTable GetTextToTable(string path) 
{ 
    try 
    { 
     DataTable dataTable = new DataTable 
     { 
      Columns = { 
       {"MyID", typeof(int)}, 
       "MyData" 
      }, 
      TableName="MyTable" 
     }; 
     // Create an instance of StreamReader to read from a file. 
     // The using statement also closes the StreamReader. 
     using (StreamReader sr = new StreamReader(path)) 
     { 
      String line; 
      // Read and display lines from the file until the end of 
      // the file is reached. 
      while ((line = sr.ReadLine()) != null) 
      { 
       string[] words = line.Split(new string[] { "\\t" }, StringSplitOptions.RemoveEmptyEntries); 
       dataTable.Rows.Add(words[0], words[1]); 
      } 
     } 
     return dataTable; 
    } 
    catch (Exception e) 
    { 
     // Let the user know what went wrong. 
     throw new Exception(e.Message); 
    } 

} 

這樣稱呼它

GetTextToTable(Path.Combine(Server.MapPath("."), "TextFile.txt")); 

你也可以檢查出CSV File Imports in .NET

0

想我也添加到「volpan 「代碼如下:

String _source = System.IO.File.ReadAllText(FilePath, Encoding.GetEncoding(1253)); 

這是很好的添加文本文件的編碼,所以你可以讀取數據,並在我的情況下將其修改後導出到另一個文件。

相關問題