
在.net怎么读取csv文件保存到数组里
这个是我用的调用的读取csv文件的数组方法,应该是对的但是读取出来好像给予的值编码不正确,我测试了显示出来的值已经乱码了.要怎么弄才能显示不乱码,csv里面是数字和中文....
这个是我用的调用的读取csv 文件的数组方法,应该是对的但是读取出来好像给予的值编码不正确,我测试了显示出来的值已经乱码了.要怎么弄才能显示不乱码,csv里面是数字和中文.net里面定义的是string和datetime和ToDecimal类型,sql数据库里为money,varchar,int类型.
private string[] ReadCSVFile()
{
System.IO.FileStream fs = null;
System.IO.StreamReader sw = null;
string content = string.Empty;
try
{
//判断磁盘上是否存在工资CSV文件
if (File.Exists(strPath))
{
//以只读模式打开
fs = new System.IO.FileStream(strPath, System.IO.FileMode.Open);
sw = new System.IO.StreamReader(fs, System.Text.Encoding.Default);
//从文件中读出所有的记录
StringBuilder builderHis = new StringBuilder();
string strLine =sw.ReadLine();
while (strLine != null)
{
content += "~" + strLine;
strLine = sw.ReadLine();
}
}
else
{
JScript.MessageBox("请先上传文件!", this, false);
}
return content.ToString().Split(new char[] { '~' });
}
catch(Exception exp)
{
throw exp;
return null;
}
}
调用上面的方法
//读取CSV文件,返回字符串数组
PayStoreroomInfo psi = new PayStoreroomInfo();
string[] splitStrs = this.ReadCSVFile();
for (int i = 4; i < splitStrs.Length; i++)
{
string[] strCommaSplits = splitStrs[i].Split(new char[] { ',' });
psi.ID = Convert.ToInt32(strCommaSplits[0]);
psi.姓名 = strCommaSplits[1];
}
add(psi); 展开
private string[] ReadCSVFile()
{
System.IO.FileStream fs = null;
System.IO.StreamReader sw = null;
string content = string.Empty;
try
{
//判断磁盘上是否存在工资CSV文件
if (File.Exists(strPath))
{
//以只读模式打开
fs = new System.IO.FileStream(strPath, System.IO.FileMode.Open);
sw = new System.IO.StreamReader(fs, System.Text.Encoding.Default);
//从文件中读出所有的记录
StringBuilder builderHis = new StringBuilder();
string strLine =sw.ReadLine();
while (strLine != null)
{
content += "~" + strLine;
strLine = sw.ReadLine();
}
}
else
{
JScript.MessageBox("请先上传文件!", this, false);
}
return content.ToString().Split(new char[] { '~' });
}
catch(Exception exp)
{
throw exp;
return null;
}
}
调用上面的方法
//读取CSV文件,返回字符串数组
PayStoreroomInfo psi = new PayStoreroomInfo();
string[] splitStrs = this.ReadCSVFile();
for (int i = 4; i < splitStrs.Length; i++)
{
string[] strCommaSplits = splitStrs[i].Split(new char[] { ',' });
psi.ID = Convert.ToInt32(strCommaSplits[0]);
psi.姓名 = strCommaSplits[1];
}
add(psi); 展开
1个回答
展开全部
sw = new System.IO.StreamReader(fs, System.Text.Encoding.Default);
编码问题解决 这句话就可以了。。
第二个参数可以替换成你的文件适用的编码 如Encoding.Utf8
另外逗号分隔文件的格式约定很复杂 如果想达到通用的效果 简单的split逗号换行是行不通的
还要对引号和引号的转义进行处理
编码问题解决 这句话就可以了。。
第二个参数可以替换成你的文件适用的编码 如Encoding.Utf8
另外逗号分隔文件的格式约定很复杂 如果想达到通用的效果 简单的split逗号换行是行不通的
还要对引号和引号的转义进行处理
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询