一个.CSV文件,里面有不规则表,求用datagird或其它形式显示在网页上
A B C D E
账号: "3202004809000463231 " //注意帐号里的数字占了BCD三个单元格
交款 0 800,000.00 20,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( "\ " ", " ");