一个.CSV文件,里面有不规则表,求用datagird或其它形式显示在网页上A B C D E
账号: "3202004809000463231 " //注意帐号里的数字占了BCD三个单元格
交款 0 800,000.00 20,437,024.00//用excel打开为数字变成######,但把单元格一拉就还原成数字
如果把文件扩展名改为.xls,表格会严重变形
账号: "3202004809000463231 " //注意帐号里的数字占了BCD三个单元格
交款 0 800,000.00 20,437,024.00//用excel打开为数字变成######,但把单元格一拉就还原成数字
如果把文件扩展名改为.xls,表格会严重变形
{
sError = null;
string constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties='text;HDR=No;FMT=Delimited'";
OleDbConnection cn = new OleDbConnection(constr);
DataSet ds = null;
try
{
cn.Open();
OleDbDataAdapter ada = new OleDbDataAdapter(sql, cn);
ds = new DataSet();
ada.Fill(ds);
}
catch (Exception ex)
{
err= ex.Message;
}
finally
{
cn.Close();
}
return ds;
}
用StreamReader读到字符串ReadLine,然后Split(',')到字符串数组
/// 把一个CSV文件读到一个DataTable中
/// </summary>
/// <param name="strpath">文件完整路径</param>
/// <returns>DataTable</returns>
public static DataTable GetTable(string strpath)
{
Regex reg = new Regex("\",\"");
int intColCount = 0;
DataTable mydt = new DataTable("myTableName"); //DataColumn mydc;
//DataRow mydr; //string strpath = "";
string strline;
string[] aryline; StreamReader mysr = new StreamReader(strpath,System.Text.Encoding.Default);
strline = mysr.ReadLine(); aryline = reg.Split(strline); intColCount = aryline.Length;
for (int i = 0; i < aryline.Length; i++)
{
DataColumn mydc = new DataColumn(aryline[i].Replace("\"", ""), typeof(string));
mydt.Columns.Add(mydc);
}
while ((strline = mysr.ReadLine()) != null)
{
aryline = reg.Split(strline);
DataRow mydr = mydt.NewRow();
for (int i = 0; i < intColCount; i++)
{
mydr[i] = aryline[i].Replace("\"","");
}
mydt.Rows.Add(mydr);
}
return mydt;
}