public List<TrainData> Read(String filePath, int direction) { List<TrainData> resultList = new List<TrainData>(); if (filePath == null || filePath == "") { throw new Exception("文件为空"); } String sConnectionString = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + filePath + ";Extended Properties='Excel 8.0; HDR=yes; IMEX=0'"; ; OleDbConnection objConn = new OleDbConnection(sConnectionString); objConn.Open(); OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [Sheet1$]", objConn); OleDbDataAdapter objAdapter = new OleDbDataAdapter(); objAdapter.SelectCommand = objCmdSelect; DataSet workListDataset = new DataSet(); objAdapter.Fill(workListDataset); Dictionary<int, String> stationDict = new Dictionary<int, string>(); for (int i = 1; i < workListDataset.Tables[0].Rows.Count; i+=2) { String stationName=workListDataset.Tables[0].Rows[i][0].ToString(); if (stationName!="") { stationDict.Add(i, stationName); stationDict.Add(i + 1, stationName); } } for (int i = 1; i < workListDataset.Tables[0].Columns.Count; i++) { String trainNo = workListDataset.Tables[0].Columns[i].ColumnName; TrainData td = new TrainData(trainNo, DecideType(trainNo), direction); TimeReader timeReader = new TimeReader(); if (direction == 1) { for (int j = 1; j < stationDict.Count + 1; j+=2) { String stationName = stationDict[j]; String arriveTime = timeReader.ConvertTime(workListDataset.Tables[0].Rows[j][i].ToString()); String leaveTime = timeReader.ConvertTime(workListDataset.Tables[0].Rows[j+1][i].ToString()); if (arriveTime != "" || leaveTime != "") { td.AddStop(stationName, arriveTime, leaveTime); } } } else { for (int j = stationDict.Count; j > 0; j-=2) { String stationName = stationDict[j]; String arriveTime = timeReader.ConvertTime(workListDataset.Tables[0].Rows[j][i].ToString()); String leaveTime = timeReader.ConvertTime(workListDataset.Tables[0].Rows[j - 1][i].ToString()); if (arriveTime != "" || leaveTime != "") { td.AddStop(stationName, arriveTime, leaveTime); } } } resultList.Add(td); } return resultList; }