读书人

100分求读csv文件的源码!该如何解决

发布时间: 2012-01-16 23:36:51 作者: rapoo

100分求读csv文件的源码!!
一个.CSV文件,里面有不规则表,求用datagird或其它形式显示在网页上

A B C D E
账号: "3202004809000463231 " //注意帐号里的数字占了BCD三个单元格
交款 0800,000.0020,437,024.00//用excel打开为数字变成######,但把单元格一拉就还原成数字

如果把文件扩展名改为.xls,表格会严重变形

[解决办法]
.CSV应该是以逗号分隔的数据文件,可以直接把其当成文本文件来处理,而不用看做Excel的文件。

[解决办法]
同意楼上。
[解决办法]
关键是逗号和回车。
[解决办法]
你可以把这个文件当做数据源使用OleDB来从其中获取数据,参考代码如下:

public static DataSet GetDataTable(string fileName, string sql, out string err)
{
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;
}

[解决办法]
CSV文本文件而已,行用回车换行符分隔,列用逗号分隔
用StreamReader读到字符串ReadLine,然后Split( ', ')到字符串数组
[解决办法]
学习哈

[解决办法]
/// <summary>
/// 把一个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;
}
[解决办法]
和读取TXT文件一样,然后只要对账号这个值进行处理,使之占有B对应的单元格,然后使C,D单元格默认为空.
[解决办法]
留个名
[解决办法]
up
[解决办法]
顶了再说

读书人网 >asp.net

热点推荐