winform读取CSV文件数据丢失,
代码如下:
public static DataTable OpenCSV(string fileName)
{
DataTable dt = new DataTable();
//FileStream fs = new FileStream(fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
StreamReader sr = new StreamReader(fileName, System.Text.Encoding.Default);
//记录每次读取的一行记录 //string strLine = ""; //记录每行记录中的各字段内容
string[] aryLine;
//标示列数
int columnCount = 0;
//标示是否是读取的第一行
bool IsFirst = true;
string newTitle =string.Empty;
string[] arrayTitle=new string[]{};
string[] newArray = new string[] { };
bool isOk = true;
//Main(fileName);
//逐行读取CSV中的数据
while (isOk)
{
StringBuilder strLine = new StringBuilder();
strLine.Append(sr.ReadLine());
//只要描述信息里的数据多了就丢失 if (strLine.Length <= 0)
break;
aryLine = strLine.ToString().Split('\t');
if (IsFirst == true)
{
IsFirst = false;
columnCount = aryLine.Length;
//创建列
//DataColumn dc0 = new DataColumn("状态");
//dt.Columns.Add(dc0);
newTitle = strLine.ToString();
newArray = aryLine;
DataColumn dc0 = new DataColumn("状态");
dt.Columns.Add(dc0);
arrayTitle = Get_Csv_Head();
for (int i = 0; i < arrayTitle.Length; i++) {
DataColumn dc = new DataColumn(arrayTitle[i]);
dt.Columns.Add(dc);
}
}
else
{
DataRow dr = dt.NewRow();
dr[0] = "未上传";
for (int j = 0; j < arrayTitle.Length; j++) {
int state = ReturnIndex(newArray, arrayTitle[j].ToString());
if (state != -1)
{
if (arrayTitle[j].ToString() == "宝贝描述")
dr[j+1] = aryLine[state].ToString().Replace("\"", "").Replace(",", "");
else
dr[j + 1] = aryLine[state].ToString().Replace("\"", "").Replace(",", "");
}
else {
dr[j] = "";
}
}
dt.Rows.Add(dr);
}
} sr.Close();
//fs.Close();
return dt;
}
代码如下:
public static DataTable OpenCSV(string fileName)
{
DataTable dt = new DataTable();
//FileStream fs = new FileStream(fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
StreamReader sr = new StreamReader(fileName, System.Text.Encoding.Default);
//记录每次读取的一行记录 //string strLine = ""; //记录每行记录中的各字段内容
string[] aryLine;
//标示列数
int columnCount = 0;
//标示是否是读取的第一行
bool IsFirst = true;
string newTitle =string.Empty;
string[] arrayTitle=new string[]{};
string[] newArray = new string[] { };
bool isOk = true;
//Main(fileName);
//逐行读取CSV中的数据
while (isOk)
{
StringBuilder strLine = new StringBuilder();
strLine.Append(sr.ReadLine());
//只要描述信息里的数据多了就丢失 if (strLine.Length <= 0)
break;
aryLine = strLine.ToString().Split('\t');
if (IsFirst == true)
{
IsFirst = false;
columnCount = aryLine.Length;
//创建列
//DataColumn dc0 = new DataColumn("状态");
//dt.Columns.Add(dc0);
newTitle = strLine.ToString();
newArray = aryLine;
DataColumn dc0 = new DataColumn("状态");
dt.Columns.Add(dc0);
arrayTitle = Get_Csv_Head();
for (int i = 0; i < arrayTitle.Length; i++) {
DataColumn dc = new DataColumn(arrayTitle[i]);
dt.Columns.Add(dc);
}
}
else
{
DataRow dr = dt.NewRow();
dr[0] = "未上传";
for (int j = 0; j < arrayTitle.Length; j++) {
int state = ReturnIndex(newArray, arrayTitle[j].ToString());
if (state != -1)
{
if (arrayTitle[j].ToString() == "宝贝描述")
dr[j+1] = aryLine[state].ToString().Replace("\"", "").Replace(",", "");
else
dr[j + 1] = aryLine[state].ToString().Replace("\"", "").Replace(",", "");
}
else {
dr[j] = "";
}
}
dt.Rows.Add(dr);
}
} sr.Close();
//fs.Close();
return dt;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货