{
DataTable dt = new DataTable();
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs, Encoding.Default);
//記錄每次讀取的一行記錄
string strLine = "";
//記錄每行記錄中的各字段內容
string[] aryLine;
//標示列數
int columnCount = 0;
//標示是否是讀取的第一行
bool IsFirst = true;
bool IsTotalResult = false;
//逐行讀取CSV中的數據
while ((strLine = sr.ReadLine()) != null)
{
if (strLine == "" || strLine.Replace(",","").IsEmpty())
{
continue;
}
aryLine = strLine.Replace(" ","").Split(',');
if (strLine.Contains("Header_Data"))
{
IsTotalResult = true;
continue;
}
if (IsTotalResult)
{
if (strLine.Contains("Component_Data"))
{
string totalReuslt = dt.Rows[0]["Result"].ToString();
strSN = dt.Rows[0]["BarCode"].ToString();
if (totalReuslt.Contains('F'))
{
IsTotalResult = false;
dt = new DataTable();
IsFirst = true;
continue;
}
else
{
sr.Close();
fs.Close();
return true;
}
}
if (IsFirst == true)
{
IsFirst = false;
columnCount = aryLine.Length;
//創建列
for (int i = 0; i < columnCount; i++)
{
DataColumn dc = new DataColumn(aryLine[i].Trim());
dt.Columns.Add(dc);
}
}
else
{
DataRow dr = dt.NewRow();
for (int j = 0; j < columnCount; j++)
{
dr[j] = aryLine[j].Trim();
}
dt.Rows.Add(dr);
}
continue;
}
if (IsFirst == true)
{
IsFirst = false;
columnCount = aryLine.Length;
//創建列
for (int i = 0; i < columnCount; i++)
{
DataColumn dc = new DataColumn(aryLine[i].Trim());
dt.Columns.Add(dc);
}
}
else
{
DataRow dr = dt.NewRow();
for (int j = 0; j < columnCount; j++)
{
dr[j] = aryLine[j].Trim();
}
dt.Rows.Add(dr);
}
}
sr.Close();
fs.Close();
}