Excel ファイルからデータをインポートしていますが、インポートしているデータが TimeSpan か通常の文字列かを確認する必要があります。データは07:00:00またはD2 07:00のいずれかになるためです。Excel ファイルでは、一部のフィールドはtt:mmにフォーマットされていますが、その他はプレーン テキスト フィールドです。
私のコードは次のようになります。
public void ReadExcelFile()
{
string filename = @"C:\Temp\Copy2.xlsx";
using (OleDbConnection connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filename + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\""))
{
try
{
connection.Open();
string sqlCmd1 = "SELECT * FROM [Sheet1$]";
using (OleDbCommand command = new OleDbCommand(sqlCmd1, connection))
{
command.CommandType = System.Data.CommandType.Text;
using (OleDbDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
alias = "" + reader[3];
codeT = "" + reader[4];
dtTruck = "" + reader[5];
codeP = "" + reader[6];
dtPlane = "" + reader[7];
dtDealer = "" + reader[8];
TimeSpan ts;
bool TruckisValid = TimeSpan.TryParse(dtTruck, CultureInfo.InvariantCulture, out ts);
bool PlaneisValid = TimeSpan.TryParse(dtPlane, out ts);
if (TruckisValid )
{
truck = TimeSpan.FromDays(Convert.ToDouble(dtTruck));
}
else if (PlaneisValid)
{
plane = TimeSpan.FromDays(Convert.ToDouble(dtPlane));
}
else
{
}
if (dtTruck == "" && dtPlane == "")
{
dtTruck = "";
dtPlane = "";
}
else if (dtTruck != "")
{
truck = TimeSpan.FromDays(Convert.ToDouble(dtTruck));
dtPlane = "";
}
else if (dtPlane != "")
{
plane = TimeSpan.FromDays(Convert.ToDouble(dtPlane));
dtTruck = "";
}
SearchForAdrIDAndCustID(Convert.ToString(reader[0]), Convert.ToString(reader[3]));
InsertData(custID, "" + reader[3], adrID, truck, codeT, plane, codeP, dtDealer);
}
}
}
}
catch (Exception exception)
{
Console.WriteLine("ERROR in ReadExcelFile() method. Error Message : " + exception.Message);
}
}
}
ご覧のとおり、ブール値を使用して、インポートされたフィールドがタイムスパンかどうかを判断しようとしました。しかし、bool は常に false です。
誰でも助けることができますか?