Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > .NET Framework > Forum > หาแนวร่วมทดสอบ dll อ่านไฟล์ excel แล้วแปลงออกมาเป็น DataSet - DataTable ครับ



 

หาแนวร่วมทดสอบ dll อ่านไฟล์ excel แล้วแปลงออกมาเป็น DataSet - DataTable ครับ

 



Topic : 122786



โพสกระทู้ ( 281 )
บทความ ( 0 )



สถานะออฟไลน์




ผมได้ทดลองเขียน DLL ขึ้นมาตัวหนึ่งโดยใช้ Microsoft.Office.Interop.Excel เพื่อ่านไฟล์จำพวก Excel (xls, xlsx, csv)
ทดสอบเบื้องต้นแล้วใช้งานได้ปกติ แต่คนเดียวก็ไม่ค่อยแน่ใจเลยอยากมาหาแนวร่วมครับ 555+

วิธีการเรียกใช้
Code (VB.NET)
Imports ExcelReaderPlugin.ExcelReader

Dim FilePath as string = "C:/201604.xlsx"
Using xls As New ExcelReaderPlugin.ExcelReader(FilePath)
    xls.GetDataSet(True) 'Return DataSet
    xls.GetDataTable(0) 'Return DataTable
    xls.GetSheetNames() 'Return List(of String)
    xls.GetSheetNames_DataTable() 'Return DataTable
    xls.GetSheetCount() 'Return Integer
End Using


Methods
Code (VB.NET)
GetSheetNames()
'ชื่อชีททั้งหมด รีเทิร์นออกมาเป็น List (Of String)

GetSheetNames_DataTable() 
'ชื่อชีททั้งหมด รีเทิร์นออกมาเป็น DataTable มีหนึ่ง Column ชื่อว่า Name

GetSheetCount() As Integer 
'จำนวนของชีททั้งหมด

GetDataSet(Optional SetColumnNameWithColumnHeader As Boolean = False, Optional ByVal AutoChangeColumnDataType As Boolean = False) As System.Data.DataSet
'ข้อมูลทั้งหมดในไฟล์ excel โดยแปลงข้อมูลให้อยู่ใน DataSet แล้ว
'SetColumnNameWithColumnHeader  = กำหนดชื่อคอลัมน์จากข้อมูลแถวแรก (อย่างเช่นพวกไฟล์ csv ที่หัวคอลัมจะอยู่ที่แถวแรก)
'AutoChangeColumnDataType  = เปลี่ยนประเภทข้อมูลของคอลัมน์ตามข้อมูลแถวแรกไม่รวมแถวที่ตั้งเป็นชื่อคอลัมน์

GetDataTable(ByVal SheetIndex As Integer, Optional ByVal SetColumnNameWithColumnHeader As Boolean = False, Optional ByVal AutoChangeColumnDataType As Boolean = False) As System.Data.DataTable
'ข้อมูลทั้งหมดตามอินเด็กซ์แถบชีทโดยแปลงข้อมูลให้อยู่ใน DataTable แล้ว
'SheetIndex = อันดับของชีทที่เลือก
'SetColumnNameWithColumnHeader  = กำหนดชื่อคอลัมน์จากข้อมูลแถวแรก (อย่างเช่นพวกไฟล์ csv ที่หัวคอลัมจะอยู่ที่แถวแรก)
'AutoChangeColumnDataType  = เปลี่ยนประเภทข้อมูลของคอลัมน์ตามข้อมูลแถวแรกไม่รวมแถวที่ตั้งเป็นชื่อคอลัมน์


มีไฟล์ dll ทั้งหมด 3 อัน


ใครสนใจลองโหลดไปใช้งานดูได้ที่ด้านล่างนี้ครับ
http://www.mediafire.com/download/g2y1vx0sdyv8sri/ExcelReaderPlugin.rar



Tag : .NET, Excel (Excel.Application), VB.NET, VS 2008 (.NET 3.x)







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2016-05-06 16:13:15 By : deksoke View : 1235 Reply : 21
 

 

No. 1



โพสกระทู้ ( 4,436 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook








แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-06 17:18:26 By : lamaka.tor
 


 

No. 2



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ไม่ใช้ ADO.Net ล่ะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-07 06:53:26 By : mr.win
 

 

No. 3



โพสกระทู้ ( 281 )
บทความ ( 0 )



สถานะออฟไลน์


ตอนนนี้หลักๆ ADO.NET อยู่ครับ แต่มักเกิดปัญหาถ้าใช้เยอะๆแล้วจะอ่านไฟล์ไม่ได้ ต้องไปรีสตาร์ท app pool ใหม่ถึงจะใช้งานได้
ผมเลยหาวิธีอ่านไฟล์อีกแบบแล้วมาเจอ Interop เอาไว้ใช้สำรองกรณีเกิดปัญหาข้างต้นครับ ^^


ประวัติการแก้ไข
2016-05-07 08:45:24
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-07 08:44:48 By : deksoke
 


 

No. 4



โพสกระทู้ ( 4,436 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ผมเคยเรียกออกมาเป็น datatable เหมือนว่า จะอ่านแค่หน้าแรก หน้าสองไม่อ่าน
ทั้งๆที่ผมก็ใช้ Select * from หาทางออกไม่ได้เลยต้องกลับมาใช้ Interop แต่ติดที่ ver บางเครื่อง 2003,2007,2013
Error ตลอด เลยใช้ excelplus นิ่งเลยครับใช้มาจนถึงทุกวันนี้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-08 09:42:34 By : lamaka.tor
 


 

No. 5



โพสกระทู้ ( 821 )
บทความ ( 0 )



สถานะออฟไลน์


ขออนุญาติโหลดไปเก็บก่อนน่ะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-09 10:48:02 By : fonfire
 


 

No. 6



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-09 12:48:51 By : mr.win
 


 

No. 7



โพสกระทู้ ( 281 )
บทความ ( 0 )



สถานะออฟไลน์


ตอนนี้ที่ทราบก็จะมี Interop, excelplus, ado.net 3 ตัวที่ใช้อ่าน excel ได้
ท่านไหนรู้เพิ่มเติมแนะนำหน่อยครับ จะได้ไปทดสอบ อิอิ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-09 12:52:45 By : deksoke
 


 

No. 8



โพสกระทู้ ( 4,436 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 7 เขียนโดย : deksoke เมื่อวันที่ 2016-05-09 12:52:45
รายละเอียดของการตอบ ::
เท่าที่ผมรู้โปรแกรมบัญชีบางตัวก็มี dll อ่าน adobe ,mocrosoft,Dwg ได้ครับ(ขอไม่เอ่ยนามนะครับ)
แต่ผมก๊อบมาใช้แล้วติด serial key ไม่เหมาะสำหรับเอามาใช้ส่วนตัวเลยไม่ใช้ครับ
แต่คิดว่าหลัก รากฐาน อาจจะมาจาก ado นี่แหละครับแค่เขาอาจจะพัฒนาให้เสถียรขึ้น



แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-10 08:11:08 By : lamaka.tor
 


 

No. 9

Guest


ถ้า header column ไม่ได้อยู่ที่ row 1 ล่ะ dll สามารถรู้ไหม

แล้วถ้ามี title ด้วยล่ะ มันยังหาส่วนตารางได้ไหม

เอาแค่นี้ก่อนนะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-10 09:09:41 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 10



โพสกระทู้ ( 281 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 9 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2016-05-10 09:09:41
รายละเอียดของการตอบ ::
ถ้า header column ไม่ได้อยู่ที่ row 1 ล่ะ dll สามารถรู้ไหม

แล้วถ้ามี title ด้วยล่ะ มันยังหาส่วนตารางได้ไหม

เอาแค่นี้ก่อนนะ

การทำงานของ dll คืออ่านทุกช่องที่ใช้งานในชีทแล้วนำมากรอกใส่ datatable ครับ
มันจึงถือว่าทั้งหมดเป็นตารางที่ต้องอ่านไปเลย จะให้ค้นหาตารางเองก็ยากไปหน่อยครับ
ดังนั้นผมจะเปลี่ยน
ให้เป็นเพิ่ม parameter ระบุขอบเขตการอ่านได้ว่าเริ่มอ่านจากช่องไหน จบที่ช่องไหน
กรณีไม่ระบุ ก็จะอ่านทั้งหมดเช่นเดิมครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-10 10:45:35 By : deksoke
 


 

No. 11

Guest


แล้วถ้าสมมุติว่าใน sheet ส่วนท้าย data เกิดมี empty row มันสามารถ skip ทิ้งได้ไหม

ตัวอย่าง

id | name | <ว่าง>
--------------------------------------------
1 | thaicarete 1 | <ว่าง>
2 | thaicarete 2 | <ว่าง>
3 | thaicarete 3 | <ว่าง>
<ว่าง> | <ว่าง> | <ว่าง>
<ว่าง> | <ว่าง> | <ว่าง>
<ว่าง> | <ว่าง> | <ว่าง>

dll สามารถ skip white space ได้ไหม

<ว่าง> = "" แต่ไม่ใช่ null
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-10 11:05:37 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 12



โพสกระทู้ ( 281 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 11 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2016-05-10 11:05:37
รายละเอียดของการตอบ ::
dll สามารถ skip white space ได้ไหม

<ว่าง> = "" แต่ไม่ใช่ null


ไม่สามารถ skip ผ่านไปได้ครับ
ต้อง delete แถวนั้นออกไปเลยเพื่อให้ค่าใน cell กลายเป็น null
แล้ว interop จะไม่ถือว่าแถวนั้นอยู่ในพื้นที่ของข้อมูลในชีทครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-10 14:03:28 By : deksoke
 


 

No. 13

Guest


น่าจะพัฒนาต่อให้เป็น wizard (ui dll) ไปเลยเนอะ

- เปิดไฟล์

- เลือก sheet

- กำหนดขอบเขตของข้อมูล
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-10 14:07:48 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 14



โพสกระทู้ ( 4,436 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 13 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2016-05-10 14:07:48
รายละเอียดของการตอบ ::

แบบนั้นเคยทำแล้วครับ
แต่ใช้ Interop, excelplus เพราะ ado จะลากออกมาทั้งไส้ครับ
แรกๆที่ผมหัดเขียนกับ Interop ก็ทำเป็น
opendialog ไฟล์
แล้วเอา sheet name มาลงใน combobox
จากนั้นใช้ textbox 2 ตัวให้ระบุ เซลที่ต้องการจาก textbox1 to textbox 2(A1 to Z555)
แล้วค่อย forloop มาลง grid

*** หากมองในแง่ของ datatable อย่างท่าน Furikuri เราก็น่าจะสามารถ select ที่ต้องการออกมาได้ครับ
แต่อาจจะยังไม่ตอบโจทย์เราก็ต้องปรับปรุงกันไปครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-10 14:50:40 By : lamaka.tor
 


 

No. 15

Guest


ใช้ textbox ทำไมเล่า

อ่าน sheet นั้นแล้วเอาเมาส์ลากขอบเขตเลยดิ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-10 16:17:10 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 16



โพสกระทู้ ( 4,436 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 15 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2016-05-10 16:17:10
รายละเอียดของการตอบ ::


ถ้าลากได้ แสดงว่าอ่านมาหมด เพราะต้องอ่านแล้วมากำหนดขอบเขตแล้วค่อยมาลงข้อมูลอีกรอบ
แต่ของผมระบุขอบเขตแล้วลงข้อมูลเลยครับ(ตัดการทำงาน 1 ขั้นตอน) ครับ

โชคดีที่ส่วนใหญ่งานผมมี range ที่ค่อนตายตัว ไม่งั้นคงต้องทำอย่างว่านั่นแหละครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-10 17:43:25 By : lamaka.tor
 


 

No. 17



โพสกระทู้ ( 281 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 15 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2016-05-10 16:17:10
รายละเอียดของการตอบ ::
อย่าเพิ่งใจร้อนครับ นั่นแค่ตอนที่เพิ่งหัดใช้นะ 555+
แต่ให้ผมทำได้อย่างงั้นก็ล้ำไปแระ คงต้องใช้เวลาเยอะน่าดู

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-10 17:43:35 By : deksoke
 


 

No. 18

Guest


ตอบความคิดเห็นที่ : 16 เขียนโดย : lamaka.tor เมื่อวันที่ 2016-05-10 17:43:25
รายละเอียดของการตอบ ::
งานนายก็ส่วนงานนายดิ

แต่เขาจะทำ dll จะมาฟ้งมา fix อะไร

มันต้อง flexibility ดิเฟ้ย อย่าเถียง เดี๊ยะๆ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-11 08:40:32 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 19



โพสกระทู้ ( 4,436 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 18 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2016-05-11 08:40:32
รายละเอียดของการตอบ ::
ตรงประเด็นหน่อยครับ แก่แล้ว

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-11 08:53:22 By : lamaka.tor
 


 

No. 20

Guest


เอาตรงๆ นะ

ใช้ textbox เอาป้อนค่ามัน noob อ่ะ แถมไม่ user friendly ด้วย

ไม่มีใครเขามานั่งจำก่อนว่าขอบเขตมันจากไหนถึงไหนหรอก

เขียนทั้งทีก็ทำมันดีๆ ไปเลยดิ แบบจิ้มๆ ลากๆ ก็ทำได้ไรงี้

เขียนโค้ดเทพๆ น่ะรู้จักเปล่า
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-11 09:18:47 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 21



โพสกระทู้ ( 242 )
บทความ ( 0 )



สถานะออฟไลน์


ผมขอแนะนำเพิ่มเติมนะครับ ถ้าในกรณีกลัวไปเครื่องอื่นแล้วมีปัญหา

ให้ปรับ

Copy Local True

จาก False เป็น True นะครับ .DLL มันจะได้ มาด้วยกันเผื่อ ไปเครื่องอื่นแล้ว Version ไม่ตรงกันแล้วเกิดปัญหาครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-17 21:16:36 By : bigsuntat
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : หาแนวร่วมทดสอบ dll อ่านไฟล์ excel แล้วแปลงออกมาเป็น DataSet - DataTable ครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่