نمایش نتایج 1 تا 3 از 3

نام تاپیک: خواندن خط به خط فایل اکسل

  1. #1
    کاربر دائمی آواتار shervinrv
    تاریخ عضویت
    آبان 1385
    محل زندگی
    تهران
    پست
    166

    خواندن خط به خط فایل اکسل

    سلام دوستان
    یه فایل اکسل دارم میخوام ثبتش کنم تو دیتابیس
    الان از bulkcopy میتونم کلشو بریزم تو db ولی یه ایراد داره اگه کاربر یه اطلاعاتی رو غیر اصولی وارد کرده باشه نمیتونم کنترلش کنم
    مثلا ستون نمره میخوام اول چک کنم نمره زیر 0 یا بالای 20 نداشته باشه یا اصلا بجای عدد حروف وارد نکرده باشه
    یا حتی قبلا این نمره تو دیتا بیس ثبت نشده باشه
    توی بالک کپی همرو اینزرت میکنه
    من میخوام اگه این نمره قبلا ثبت شده دیگه ثبت نشه بجاش آپدیت کنه
    برای همین باید فایل اکسل رو خط به خط بخونم و برای هر خط جدا عمل آپدیت یا اینزرت رو انجام بدم

    ممنون

  2. #2
    کاربر دائمی آواتار shervinrv
    تاریخ عضویت
    آبان 1385
    محل زندگی
    تهران
    پست
    166

    نقل قول: خواندن خط به خط فایل اکسل

    خودم حلش کردم.
    کد رو میزارم شاید به درد کسی بخوره
    البته اضافاتشو خودتون زحمت بکشید حذف کنید
      Dim sSourceConstr As String = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;D  ata Source={0};Extended Properties=""Excel 12.0 Xml;HDR=YES;""", sPath)

    Dim cnst As String = ConfigurationManager.ConnectionStrings("dbconnecti on").ConnectionString
    Dim cn As New SqlConnection(cnst)
    Dim sSourceConnection As New OleDbConnection(sSourceConstr)
    Using sSourceConnection
    Dim sql As String = String.Format("Select [date],[weekday],[event],[year],[tatil] FROM [{0}]", "Sheet1$")
    Dim command As New OleDbCommand(sql, sSourceConnection)
    sSourceConnection.Open()
    Dim submited As Integer = 0
    Using dr As OleDbDataReader = command.ExecuteReader()
    While dr.Read
    If IsDBNull(dr(0)) Or IsDBNull(dr(1)) Or IsDBNull(dr(3)) Or IsDBNull(dr(4)) Then
    Else
    Dim pdate As Integer = dr(0)
    Dim weekdaye As Integer = dr(1)
    Dim pevent As String = dr(2).ToString
    Dim pyear As Integer = dr(3)
    Dim tatil As Integer = dr(4)
    If IsNumeric(pdate) And IsNumeric(weekdaye) And IsNumeric(pyear) And IsNumeric(tatil) Then
    Dim cm As New SqlCommand
    cm.CommandText = "select id from salname where date=" & pdate
    cm.Connection = cn
    cn.Open()
    Dim ex As Integer = cm.ExecuteScalar
    cn.Close()
    If ex = Nothing Then
    cm.CommandText = "insert into salname (date,weekday,event,year,tatil) values" _
    & " (" & pdate & "," & weekdaye & ",N'" & pevent & "'," & pyear & "," & tatil & ")"
    cm.Connection = cn
    cn.Open()
    cm.ExecuteNonQuery()
    cn.Close()
    submited = submited + 1
    Else
    cm.CommandText = "update salname set" _
    & " weekday=" & weekdaye _
    & ",event=N'" & pevent & "',year=" & pyear & ",tatil=" & tatil & " where id=" & ex
    cm.Connection = cn
    cn.Open()
    cm.ExecuteNonQuery()
    cn.Close()
    submited = submited + 1
    End If
    Else
    Label1.Visible = True
    Label1.Text = Label1.Text & "<br>" & "روز " & pdate & " ثبت نشد"
    End If
    End If

    End While
    Label2.Visible = True
    Label2.Text = "تعداد " & submited & " ردیف ثبت شد"
    ' Using bulkCopy As New SqlBulkCopy(cn)
    'bulkCopy.DestinationTableName = "salname"
    'You can mannualy set the column mapping by the following way.
    'bulkCopy.ColumnMappings.Add("date", "date")
    'bulkCopy.ColumnMappings.Add("weekday", "weekday")
    'bulkCopy.ColumnMappings.Add("event", "event")
    'bulkCopy.ColumnMappings.Add("year", "year")
    'bulkCopy.ColumnMappings.Add("tatil", "tatil")


    'bulkCopy.WriteToServer(dr)
    'End Using
    End Using
    End Using


    اون قسمت کامنت هم روش بالک کپیه . خیلی چیز خوبیه اگه مثل من نیاز به کنترل ردیف به ردیف نداشته باشید

  3. #3

    نقل قول: خواندن خط به خط فایل اکسل

    ممنون دوست عزیز
    خیلی به درد میخوره

تاپیک های مشابه

  1. خواندن 750هزار رکورد از فایل اکسل و ذخیره در sql
    نوشته شده توسط helpsos در بخش C#‎‎
    پاسخ: 3
    آخرین پست: جمعه 06 دی 1392, 11:39 صبح
  2. پاسخ: 5
    آخرین پست: شنبه 02 اردیبهشت 1391, 21:36 عصر
  3. سوال: مشکل در خواندن اطلاعات از یک فایل اکسل
    نوشته شده توسط gilas1368 در بخش C#‎‎
    پاسخ: 1
    آخرین پست: یک شنبه 06 آذر 1390, 10:30 صبح
  4. خواندن یک قسمت از فایل اکسل
    نوشته شده توسط فرزاد دلفی باز در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 4
    آخرین پست: سه شنبه 13 شهریور 1386, 16:01 عصر
  5. خواندن اطلاعات از یک فایل اکسل
    نوشته شده توسط Delphi_OnLine999 در بخش برنامه نویسی در Delphi
    پاسخ: 4
    آخرین پست: پنج شنبه 23 شهریور 1385, 23:47 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •