我的代码如下,只读出一条乱码显示的数据,为什么啊
public void loadcsv(string filename)
{
//DataTable dt = new DataTable();
string strConn = @"Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=";
strConn += ";Extensions=asc,csv,tab,txt;";
OdbcConnection objConn = new OdbcConnection(strConn);
OdbcDataAdapter adapter = new OdbcDataAdapter("select * from " + filename, strConn); if (filename != "")
{
try
{
dtcsv.Clear();
dtcsv.Columns.Clear();
adapter.Fill(dtcsv);
}
catch (System.Exception e)
{
System.Windows.Forms.MessageBox.Show(e.ToString());
}
} }
o标准连接(StandardSecurity):
"Driver={MicrosoftTextDriver(*.txt;*.csv)};Dbq=C:\\DatabasePath\\;Extensions=asc,csv,tab,txt;"
如果文本文件使用tab作为分隔符,你必须创建schema.ini文件,你必须在连接串中使用Format=TabDelimited选项。
注意:你必须在sql语句中指定文件名(例如"Select Name,Address From Clients.csv")csv文件规则
1 开头是不留空,以行为单位。 2 可含或不含列名,含列名则居文件第一行。 3 一行数据不垮行,无空行。 4 以半角逗号(即,)作分隔符,列为空也要表达其存在。 5 列内容如存在半角逗号(即,)则用半角引号(即"")将该字段值包含起来。 6 列内容如存在半角引号(即")则应替换成半角双引号("")转义。 7 文件读写时引号,逗号操作规则互逆。 8 内码格式不限,可为ASCII、Unicode或者其他。 9 不支持特殊字符和中文
代码如下
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strPath + ";Extended Properties='TEXT;HDR=NO;FMT=Delimited'";
OleDbConnection objConn = new OleDbConnection(strConn);
string strSql = "Select * From " + filename;
OleDbCommand cmd = new OleDbCommand(strSql, objConn);
OleDbDataAdapter dad = new OleDbDataAdapter(strSql, objConn); if (filename != "")
{
try
{
objConn.Open();
ad.Fill(dtcsv);
objConn.Close();
}
catch (System.Exception e)
{
System.Windows.Forms.MessageBox.Show(e.ToString());
}
}
上面第一种代码读取时,默认第一行为表的列名,在CSV格式文件中插入列名或空白行即可。第一二种代码,是路径名不对,正确如下 public void loadcsv(string filename)
{
dtcvs.Clear();
dtcvs.Columns.Clear(); if (filename != "")
{
try
{
string Strconn = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" + Path.GetDirectoryName(filename) + ";Extended Properties='text;HDR=no;IMEX=1;'";
OleDbConnection objConn = new OleDbConnection(Strconn);
string strSql = "Select * From " + Path.GetFileName(filename);
OleDbCommand cmd = new OleDbCommand(strSql, objConn);
OleDbDataAdapter dad = new OleDbDataAdapter(strSql, objConn); objConn.Open();
dad.Fill(dtcsv);
objConn.Close();
}
catch (System.Exception e)
{
System.Windows.Forms.MessageBox.Show(e.ToString());
}
} }