2 qq 29651709 qq_29651709 于 2015.07.09 13:27 提问

VC#调试工具需求求解。

利用VC#实现一个工具,支持读取CSV格式的文件,要求支持文件浏览选择。该怎么做,求帮忙,谢谢

7个回答

caozhy
caozhy   Ds   Rxr 2015.07.09 13:49

http://www.cnblogs.com/qfcndtt/archive/2012/06/01/2530755.html
直接用这个代码

选择文件:

 string filename = "";
OpenFileDialog  fd = new OpenFileDialog();
if (fd.ShowDialog() == DialogResult.OK)
{
    filename = fd.FileName;
        ...
}
guwei4037
guwei4037   Ds   Rxr 2015.07.09 13:42

读取csv http://www.cnblogs.com/Clin/archive/2013/03/14/2959022.html

文件浏览,如果是winform,用fileopendialog控件。如果是asp.net则需要将csv文件上传到服务器,然后读取。

caozhy
caozhy   Ds   Rxr 2015.07.09 14:16

是的,Windows Forms就可以。

qq_29651709
qq_29651709   2015.07.09 14:09

代码我知道了,但是在vs里面我用什么应用程序,windows窗体吗?

qq_29651709
qq_29651709   2015.07.09 14:17

能加QQ 在详细的问下吗 我的是330837266

qq_29651709
qq_29651709   2015.07.09 14:41

大哥 求帮忙啊 我真的很急

frank_20080215
frank_20080215   2015.07.09 15:46

public class CSVFileHelper
{
///
/// 将DataTable中数据写入到CSV文件中
///
/// 提供保存数据的DataTable
/// CSV的文件路径
public static void SaveCSV(DataTable dt, string fullPath)
{
FileInfo fi = new FileInfo(fullPath);
if (!fi.Directory.Exists)
{
fi.Directory.Create();
}
FileStream fs = new FileStream(fullPath, System.IO.FileMode.Create, System.IO.FileAccess.Write);
//StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default);
StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.UTF8);
string data = "";
//写出列名称
for (int i = 0; i < dt.Columns.Count; i++)
{
data += dt.Columns[i].ColumnName.ToString();
if (i < dt.Columns.Count - 1)
{
data += ",";
}
}
sw.WriteLine(data);
//写出各行数据
for (int i = 0; i < dt.Rows.Count; i++)
{
data = "";
for (int j = 0; j < dt.Columns.Count; j++)
{
string str = dt.Rows[i][j].ToString();
str = str.Replace("\"", "\"\"");//替换英文冒号 英文冒号需要换成两个冒号
if (str.Contains(',') || str.Contains('"')
|| str.Contains('\r') || str.Contains('\n')) //含逗号 冒号 换行符的需要放到引号中
{
str = string.Format("\"{0}\"", str);
}

            data += str;
            if (j < dt.Columns.Count - 1)
            {
                data += ",";
            }
        }
        sw.WriteLine(data);
    }
    sw.Close();
    fs.Close();
    DialogResult result = MessageBox.Show("CSV文件保存成功!");
    if (result == DialogResult.OK)
    {
        System.Diagnostics.Process.Start("explorer.exe", Common.PATH_LANG);
    }
}

/// <summary>
/// 将CSV文件的数据读取到DataTable中
/// </summary>
/// <param name="fileName">CSV文件路径</param>
/// <returns>返回读取了CSV数据的DataTable</returns>
public static DataTable OpenCSV(string filePath)
{
    Encoding encoding = Common.GetType(filePath); //Encoding.ASCII;//
    DataTable dt = new DataTable();
    FileStream fs = new FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read);

    //StreamReader sr = new StreamReader(fs, Encoding.UTF8);
    StreamReader sr = new StreamReader(fs, encoding);
    //string fileContent = sr.ReadToEnd();
    //encoding = sr.CurrentEncoding;
    //记录每次读取的一行记录
    string strLine = "";
    //记录每行记录中的各字段内容
    string[] aryLine = null;
    string[] tableHead = null;
    //标示列数
    int columnCount = 0;
    //标示是否是读取的第一行
    bool IsFirst = true;
    //逐行读取CSV中的数据
    while ((strLine = sr.ReadLine()) != null)
    {
        //strLine = Common.ConvertStringUTF8(strLine, encoding);
        //strLine = Common.ConvertStringUTF8(strLine);

        if (IsFirst == true)
        {
            tableHead = strLine.Split(',');
            IsFirst = false;
            columnCount = tableHead.Length;
            //创建列
            for (int i = 0; i < columnCount; i++)
            {
                DataColumn dc = new DataColumn(tableHead[i]);
                dt.Columns.Add(dc);
            }
        }
        else
        {
            aryLine = strLine.Split(',');
            DataRow dr = dt.NewRow();
            for (int j = 0; j < columnCount; j++)
            {
                dr[j] = aryLine[j];
            }
            dt.Rows.Add(dr);
        }
    }
    if (aryLine != null && aryLine.Length > 0)
    {
        dt.DefaultView.Sort = tableHead[0] + " " + "asc";
    }

    sr.Close();
    fs.Close();
    return dt;
}

}

Csdn user default icon
上传中...
上传图片
插入图片