将一个.xls列存储为.txt文件,使用C#

我想使用C#将.xls文件中的一列保存到.txt文件中。 .xls文件的列包含一个国家的城市名称。 到目前为止,我所做的,我提取了包含20000以上的人口的城市名称。现在我只想在文本文件中存储城市名称而不是换行符的人口。 但是,当我尝试将其存储为空白文本文件。 这是我从中提取数据的代码。 xls文件。

public class City { public DataTable DataService() { var data = new DataTable(); var startPath = Application.StartupPath; string folderName = Path.Combine(startPath, "CityList"); System.IO.Directory.CreateDirectory(folderName); string SavedfileName = "POI_list.txt"; var Saving_path = Path.Combine(folderName, SavedfileName); string fileName = "Zensus_Gemeinden_org.xlsx"; var path = Path.Combine(startPath, fileName); String name = "Gemeinden_31.12.2011_Vergleich"; String constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties='Excel 12.0 XML;HDR=YES;';"; OleDbConnection con = new OleDbConnection(constr); OleDbCommand oconn = new OleDbCommand("Select [3] as City,[4] as Population, * From [" + name + "$D7:E11300] Where [4] > 20000", con); //con.Open(); OleDbDataAdapter sda = new OleDbDataAdapter(oconn); sda.Fill(data); //string Place_Json = "Place_List:" + JsonConvert.SerializeObject(data, Formatting.Indented); File.WriteAllText(Saving_path, data.ToString()); // it stores as blank text file return data; } } 

修改:现在我正在尝试这种方式。 但是显示当前文件夹中不存在的错误

  sda.Fill(data); foreach(DataRow r in data.Rows) { string output= sb.append(r["City"] + "\n"); File.WriteAllText(Saving_path, data); } 

新修改:

 var sb = new StringBuilder(); using (DataTable dt = new DataTable()) { sda.Fill(dt); foreach(DataRow r in dt.Rows) { sb.Appent(r["City"] + "\n"); } File.WriteAllText(Saving_path,sb.ToString()); return dt; } 

我以这种方式得到了我的.txt文件

 Flensburg Kiel Lübeck Neumünster Heide Geesthacht..... 

所以你需要首先用数据填充数据表,

 var sb = new StringBuilder(); using (DataTable dt = new DataTable()) { sda.Fill(dt); ..loop here } 

然后你的循环需要遍历行

 foreach(DataRow r in dt.Rows) { ..append data to text here } 

然后你需要使用一个stringbuilder在附加位build立string,然后把它写到一个文件中。 那看起来像

 sb.append(r["City"] + "\n");