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

时间:2016-02-24 09:43:03

标签: c# excel text local-storage text-files

我想使用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.....

1 个答案:

答案 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");