2014-02-21 4 views
1

Я хочу импортировать значение даты из ячейки excel. значение ячейки, имеющее формат «10 октября 2013 года». Я хочу преобразовать его в тип данных datetime. Мой код получаю ошибку «строка не была признана в качестве действительного DateTime»Строка не была признана действительной DateTime в C# asp.net

// код

 OleDbCommand olecmd = new OleDbCommand("select * from [Sheet1$]", olecon); 


       OleDbDataReader olerdr = olecmd.ExecuteReader(); 
       while (olerdr.Read()) 
       { 
        deldate = olerdr.GetValue(13).ToString(); 
        using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["irisdb"].ConnectionString)) 
        { 
         con.Open(); 
         SqlCommand cmd = new SqlCommand("procdamandrugs", con); 
         cmd.CommandType = CommandType.StoredProcedure; 
    DateTime dt = DateTime.ParseExact(deldate, "MM/dd/yyyy", CultureInfo.InvariantCulture);//getting error in this line 
         SqlParameter par9 = new SqlParameter(); 
         par9.ParameterName = "@deleffdate"; 
         par9.SqlDbType = SqlDbType.DateTime; 
         par9.Value = dt; 
         cmd.Parameters.Add(par9); 
cmd.ExecuteNonQuery(); 
    } 
    } 

ли какой-либо один помочь мне решить эту проблему.

ответ

1

Я рекомендую использовать метод DateTime.TryParse перед созданием ваших объектов SQL. Перед началом беседы с вашей базой данных убедитесь, что у вас есть качественный ввод.

http://msdn.microsoft.com/en-us/library/ch92fbc1%28v=vs.110%29.aspx

Ниже приведен пример из моего собственного кода для приложения asp.net

// Validation 
    DateTime dtOut_StartDate; 
    if (!DateTime.TryParse(txtStartDate.Text, out dtOut_StartDate)) 
    { 
     Message = "Start date is not a valid format."; 
     txtStartDate.CssClass = ErrorCssClass.TextBox; 
     txtStartDate.Focus(); 
     return false; 
    } 
5

стоимость ячейки, имеющая формат «10 октября 2013 года».

Вы вводите неверный формат в ParseExact, который не соответствует строкам даты, которые вы передаете. Вам нужен другой формат, чем вы дали. На день вам понадобится dd, за месяц вам понадобится MMMM и за год вам нужно yyyy, и вам нужно указать пробелы в качестве разделителя.

Стоит статья Custom Date and Time Format Strings на MSDN для использования строковых форматов для преобразования даты.

DateTime dt = DateTime.ParseExact(deldate, "dd MMMM yyyy", CultureInfo.InvariantCulture); 
+0

Я хочу, чтобы вставить его в SQL базы данных в «MM-dd-yyyy». Я также попробовал приведенный выше код. По-прежнему имеет ту же ошибку. – Varghese

+0

На какой строке вы получаете ошибку, проверьте аргумент базы данных/формат столбца, если она поступает из базы данных – Adil

0

Выбор даты Время установки с правой нижней нижней & Изменение формата здесь ..... .

enter image description here

Смежные вопросы