 |
|
ช่วยหน่อยครับ asp.net กับการ import csv ไฟล์ครับ คือผมทำตามนี้แล้วอ่ะครับ |
|
 |
|
|
 |
 |
|
คือผมทำตามนี้แล้วอ่ะครับ https://www.thaicreate.com/asp.net/asp.net-read-csv-files.html
แต่เวลาที่มีภาษาไทยแล้วมันเป็นภาษาต่างด้าวอ่ะครับ ช่วยทีนะครับ นี่โค๊ดนะครับ
Code (VB.NET)
Protected Sub Btnimp_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Btnimp.Click
Dim CurrentFileName As String
Dim CurrentPath As String
Dim dt1 As String
Dim dt2 As String
CurrentFileName = myFile1.FileName
If (Path.GetExtension(CurrentFileName).ToLower <> ".csv") Then
ClientScript.RegisterStartupScript(Me.GetType(), "ShowAlert", ShowAlert("Error : Please Insert Excel File(.csv)"))
Exit Sub
End If
If Not IsNothing(myFile1.PostedFile) Then
Dim UlFileName As String
Dim i As Integer
UlFileName = "Upload/" & System.IO.Path.GetFileName(myFile1.ToString)
'*** Save Images ***'
myFile1.PostedFile.SaveAs(Server.MapPath(UlFileName))
End If
Dim strPath As String = "csv/"
Dim dt As New System.Data.DataTable
If Me.myFile1.HasFile Then
Me.myFile1.SaveAs(Server.MapPath(strPath & myFile1.FileName))
'*** Read CSV to DataTable ***'
dt = CsvCreateDataTable(strPath, Trim(myFile1.FileName))
'*** Insert to Database ***'
InsertToDatabase(dt)
End If
End Sub
Function CsvCreateDataTable(ByVal strPath, ByVal strFilesName) As DataTable
Dim objConn As New OleDbConnection
Dim dtAdapter As OleDbDataAdapter
Dim dt As New DataTable
Dim dr As System.Data.DataRow
Dim i As Integer
Dim strConnString As String
'*** Column ***'
dt.Columns.Add("Serial")
dt.Columns.Add("Model")
dt.Columns.Add("Name")
dt.Columns.Add("User")
dt.Columns.Add("Type")
dt.Columns.Add("EMPLOYEEID")
dt.Columns.Add("DEPTCODE")
dt.Columns.Add("DEPTNAME")
dt.Columns.Add("TEL")
dt.Columns.Add("INVOICEDATE")
dt.Columns.Add("EXPIRE")
dt.Columns.Add("Brand")
dt.Columns.Add("Mail")
dt.Columns.Add("Fac")
dt.Columns.Add("Location")
dt.Columns.Add("Team")
dt.Columns.Add("Vendor_code")
dt.Columns.Add("Vendor_name")
Dim StrWer As StreamReader
Dim strLine As String
StrWer = File.OpenText(Server.MapPath(strPath & strFilesName))
Do Until StrWer.EndOfStream
strLine = StrWer.ReadLine()
If Trim(strLine) <> "" Then
'*** Rows ***'
If Mid(strLine, 1, 6) <> "Serial" Then
dr = dt.NewRow
dr("Serial") = Split(strLine, ",")(0)
dr("Model") = Split(strLine, ",")(1)
dr("Name") = Split(strLine, ",")(2)
dr("User") = Split(strLine, ",")(3)
dr("Type") = Split(strLine, ",")(4)
dr("EMPLOYEEID") = Split(strLine, ",")(5)
dr("DEPTCODE") = Split(strLine, ",")(6)
dr("DEPTNAME") = Split(strLine, ",")(7)
dr("TEL") = Split(strLine, ",")(8)
dr("INVOICEDATE") = Split(strLine, ",")(9)
dr("EXPIRE") = Split(strLine, ",")(10)
dr("Brand") = Split(strLine, ",")(11)
dr("Mail") = Split(strLine, ",")(12)
dr("Fac") = Split(strLine, ",")(13)
dr("Location") = Split(strLine, ",")(14)
dr("Team") = Split(strLine, ",")(15)
dr("Vendor_code") = Split(strLine, ",")(16)
dr("Vendor_name") = Split(strLine, ",")(17)
dt.Rows.Add(dr)
End If
End If
Loop
StrWer.Close()
Return dt '*** Return DataTable ***
Tag : - - - -
|
|
 |
 |
 |
 |
Date :
2010-05-07 09:41:21 |
By :
kawin |
View :
3498 |
Reply :
8 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ดูตรงหลัง ATITAYA อ่ะครับ มันเป็นภาษาต่างด้าวอ่ะครับ ช่วยหน่อยนะครับ ขอบคุณครับ

|
 |
 |
 |
 |
Date :
2010-05-07 15:45:41 |
By :
kawin |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Book1.csv
เวลา,รายการ
4:50,ควอนตั้ม เทเลวิชั่น
5:15,เช้า-ข่าว 7 สี
6:00,การ์ตูนชุด BUBU CHACHA เพื่อนรักสี่ล้อ
6:25,รายการ การแพทย์ก้าวหน้า
6:30,รายการ ตูนดิสนีย์
8:05,รายการ มรดกโลก
8:10,ข่าวเด็ด 7 สี
8:15,ละคร ตุ๊กตาทอง (on-air)
9:10,รายการ เสน่ห์กีฬา
9:15,"ยอดภาพยนตร์นานาชาติ เสนอ ภ.เกาหลีชุด ""ลิขิตรักบนรอยแค้น"" (TIME BETWEEN DOG AND WOLF) ตอนแรก"
11:10,ข่าวเด็ด 7 สี
11:15,ละคร ตลาดไม่ขาดรัก
11:55,รายการฉลาด รอบรั้ว
12:00,"7 สี คอนเสิร์ต พบกับ ""ฝน ธนสุนทร / สาวมาด เมกะแดนซ์ / ปัญญา กตัญญู / โจ พรคเนศ /ราชสีห์มา เพชรดาราพันธ์ 2007"""
12:55,ข่าวเด็ด 7 สี
13:00,ละคร สูตรรักกับดักหัวใจ
13:45,รายการ คดีเด็ด
14:40,รายการ ทางเลือกทางหลวง
14:45,รายการปลดหนี้
15:10,ข่าวเด็ด 7 สี
15:15,รายการ ฟ้ามีตา
15:55,รายการ แชมเปียน คลินิก
16:00,รายการจ้อจี้
16:40,รายการเลือกได้เลือกดี
16:43,รายการก้าวไกล
16:45,รายการ เส้นทางเศรษฐี
16:50,รายการ ถ้อยธรรมพระราชดำรัส
16:55,รายการ รักษ์สุขภาพ
17:30,ข่าวภาคค่ำ (ช่วงที่ 1)
18:00,รายการ หลานปู่กู้อีจู้
18:25,รายการ ครูวิทย์ นักคิด
18:27,รายการ พลังจิ๋ว รักษ์โลก
18:28,รายการหนึ่งในร้อย
18:30,ละคร มนต์รักสายฟ้าแลบ
19:30,ข่าวภาคค่ำ (ช่วงที่ 2)
20:15,ละคร หงส์ฟ้า
22:15,ข่าวเด็ด 7 สี
22:30,"บิ๊กซินีม่า โปรแกรมทอง เสนอ ภ.ฝรั่ง ""น้ำหนัก รัก / แค้น / ศรัทธา"" (21 GRAMS)"
0:25,ข่าวภาคดึก
0:30,รายการ แซทโซน โซนมันวันเสาร์
1:30,เด็ดข่าวดึก
1:45,รายการพิเศษ เบื้องหลังละคร นักฆ่าขนตางอน (RERUN)
2:10,"WORLD CINEMA เสนอ ภ.เกาหลี ""2 เทพบุตรสะดุดรักยัยเฉิ่ม"" (ROMANCE OF THEIR OWN)"
3:30,ข่าวเด็ด 7 สี
ReadCsv.aspx
<%@ Page Language="VB" AutoEventWireup="true" CodeFile="ReadCsv.aspx.vb" Inherits="ReadCsv" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="ImportButton" runat="server" Text="Import" />
<br />
<br />
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</div>
</form>
</body>
</html>
ReadCsv.aspx.vb
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Data
Imports System.Data.OleDb
Imports System.Data.SqlClient
Public Partial Class ReadCsv
Inherits System.Web.UI.Page
Private dataTable As DataTable
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
dataTable = New DataTable()
dataTable = ReadData()
GridView1.DataSource = dataTable
AddHandler GridView1.RowDataBound, AddressOf GridView1_RowDataBound
GridView1.DataBind()
AddHandler ImportButton.Click, AddressOf ImportButton_Click
End Sub
Protected Function ReadData() As DataTable
' อ่านข้อมูลจาก csv มาเก็บไว้ใน DataTable
Dim oleDbConnectionString As String = String.Format("Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0};Extended Properties='TEXT;HDR=Yes;FMT=Delimited;Format=Delimited(,)'", Page.Server.MapPath("~/"))
Dim oleDbConnection As New OleDbConnection(oleDbConnectionString)
Dim oleDbCommandString As String = "SELECT [เวลา] As [OnAirTime], [รายการ] As [Schedule] FROM [Book1.csv]"
Dim oleDbCommand As New OleDbCommand(oleDbCommandString, oleDbConnection)
Dim Dt As New DataTable()
Dim dataAdapter As New OleDbDataAdapter()
dataAdapter.SelectCommand = oleDbCommand
dataAdapter.Fill(Dt)
Return Dt
End Function
Protected Sub ImportButton_Click(ByVal sender As Object, ByVal e As EventArgs)
' insert ข้อมูลใน DataTable ลงฐานข้อมูล
Dim sqlConnectionString As String = "Data Source=.\SQLEXPRESS;Initial Catalog=SqlDatabase;Integrated Security=True"
Dim sqlConnection As New SqlConnection(sqlConnectionString)
Dim sqlCommandString As String = "Insert Into [MyTable] ([OnAirTime], [Schedule]) Values (@OnAirTime, @Schedule)"
Dim sqlCommand As New SqlCommand(sqlCommandString, sqlConnection)
'รูปแบบการกำหนดค่า: ชื่อพารามิเตอร์, ดาต้าไทป์, ขนาด, ชื่อคอลั่มของดาต้าเทเบิลที่จะป้อนให้พารามิเตอร์
sqlCommand.Parameters.Add("@OnAirTime", SqlDbType.NVarChar, 50, "OnAirTime")
sqlCommand.Parameters.Add("@OnAirTime", SqlDbType.NVarChar, 200, "Schedule")
Dim dataAdapter As New SqlDataAdapter()
dataAdapter.InsertCommand = sqlCommand
dataAdapter.Update(dataTable) 'กำหนดดาต้าเทเบิลที่ใช้ในการ insert
End Sub
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
e.Row.Cells(0).Text = DateTime.Parse(e.Row.Cells(0).Text).ToShortTimeString()
e.Row.Cells(0).HorizontalAlign = HorizontalAlign.Center
End If
End Sub
End Class
ลองดูว่าได้ไหม
|
 |
 |
 |
 |
Date :
2010-05-08 09:02:48 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอคนช่วยหน่อยครับ ไปต่อไม่ได้ไม่ได้อ่ะครับ
ขอบคุณครับ
|
 |
 |
 |
 |
Date :
2010-05-08 09:32:07 |
By :
kawin |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณครับ คุณ tungman พอดีเพิ่งเห็นนะครับ คือผมใช้แบบคุณ tungman ดูแล้วแต่บางคอลัม ที่เป็นตัวเลขและตัวหนังสือแบบคนละแถว มันจะมองไม่เห็นบางอันอ่ะครับ
เช่น ถ้าแถวแรกเป็นตัวเลข แถวต่อมาเป็นตัวหนังสือ มันก็จะไม่เห็นตัวหนังสือจะเป็นค่าว่างจะเห็นแต่ตัวเลข ครับ
ผมเลยใช้วิธีนี้แต่ไม่เห็นภาษาไทยอ่ะครับทำไงดี ขอบคุณมากครับ
|
 |
 |
 |
 |
Date :
2010-05-08 09:39:38 |
By :
kawin |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|

ลองแล้วไม่เห็นเป็นไรเลย
|
 |
 |
 |
 |
Date :
2010-05-08 09:53:06 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณครับ คุณ tungman ขอลองดูหน่อยนะครับ
|
 |
 |
 |
 |
Date :
2010-05-08 10:00:51 |
By :
kawin |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ก็ยังใช้ไม่ได้อ่ะครับ บางตัวที่มันชิดซ้ายก็จะไม่อ่าน เป็นค่าว่างซะงั้น
ก็ขอขอบคุณมากครับ
กำลังหาทางทำแบบอ่านทีละบรรทัดแบบเดิมให้อ่านภาษาไทยให้ได้
|
 |
 |
 |
 |
Date :
2010-05-08 12:48:33 |
By :
kawin |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เอา text ใน csv มาดูดิ๊ ว่าทำไมไม่ได้
ถ้ามันไม่แสดงภาษาไทยก็แสดงว่ามันไม่ได้ encode ด้วย utf-8 ต้องหาทางแปลงเป็น utf-8 ให้ได้ก่อน
|
 |
 |
 |
 |
Date :
2010-05-08 16:57:01 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|