我想使用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;
}
}
修改:现在我正在尝试这种方式。但是显示当前文件夹中不存在sb的错误
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.....
答案 0 :(得分:2)
所以你需要先用数据填充数据表,
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在append位中构建字符串,然后将其写入文件。这看起来像
sb.append(r["City"] + "\n");