ชุมชนคนรักภาษาเบสิค - Visual Basic Community

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 7045|ตอบกลับ: 3

[VB6] การนำเข้าข้อมูลจากไฟล์ Excel เข้าสู่ตาราง FarPoint Spread ActiveX (COM)

[คัดลอกลิงก์]

320

กระทู้

512

โพสต์

6583

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
6583


สำหรับ FarPoint Spread ActiveX (COM) ก็ตามชื่อมันเลยคือ Spread วัตถุประสงค์หลักของ Component ตัวนี้ ก็คือการใช้งานในลักษณะแบบตารางอิเล็กทรอนิกส์ หรือ SpreadSheet นั่นคืออยู่ในรูปแบบฟอร์แมตไฟล์ Excel ดีๆนั่นเอง จุดเด่นของ FarPoint คือสามารถทำงานเป็นตารางแบบ Excel มีแถวมีหลัก มีสูตรที่ใช้คำนวณหาค่าต่างๆได้เหมือนกับ Excel นอกจากนี้มันยังทำตัวเป็นตารางกริด (Data Grid) เพื่อจัดเก็บข้อมูลทั้งแบบอ่านและเขียนข้อมูลลงเซลล์ได้อย่างง่ายดาย แต่มันมีข้อด้อยคือ การจัดกลุ่มในแบบของตารางกริดจะทำได้ยาก ดังนั้นการจะฝึกใช้งาน FarPoint เราต้องมองตัวมันเป็นเหมือนกับ Excel นะครับ โค้ดนี้จึงนำเสนอการโหลด (หรือ Import) Worksheet จาก Excel มาแสดงผลบนตัว FarPoint เอาไว้ให้ได้ศึกษากันครับ ...

ดาวน์โหลดชุดติดตั้ง FarPoint Spread ActiveX และ Update 8.0.21 ล่าสุดจากผู้ผลิต (เฉพาะสมาชิกเท่านั้น)


หน้าตาการออกแบบ และเรียกใช้งาน Component ...

Project --> Components ... ให้เลือก FarPoint แบบ Unicode มาเพื่อให้แสดงผลภาษาไทยได้ถูกต้อง และ Common Dialog เพื่อการเรียกเปิดไฟล์ Excel ...


โค้ดในส่วนของการ Browse ไฟล์ Excel และทำการตรวจสอบฟอร์แมต ก่อนที่จะทำการโหลดเข้าสู่ FarPoint Spread
  1. Private Sub cmdOpenXLS_Click()
  2.     On Error GoTo ErrorHandler   ' Enable error-handling routine.
  3.    
  4.     Dim List() As String
  5.     Dim ListCount As Integer
  6.     Dim blnXLS As Boolean
  7.    
  8.     ReDim List(1)
  9.    
  10.     With dlgOpenFile
  11.         .FileName = "*.xls"
  12.         .DialogTitle = "Select Excel file to open"
  13.         .Filter = "Excel 97-2003 files (*.xls)|*.xls"
  14.         .FilterIndex = 0
  15.         .InitDir = App.Path
  16.         .Flags = cdlOFNHideReadOnly
  17.         .ShowOpen
  18.         
  19.         If .FileName = "*.xls" Then Exit Sub
  20.         
  21.         txtFileXLS.Text = .FileName
  22.         '/ GetExcelSheetList is a method and return boolean value.
  23.         blnXLS = fp.GetExcelSheetList(.FileName, List, ListCount, "", fpHandle, True)
  24.     End With
  25.    
  26.     cmbWorkSheet.Clear
  27.     '/ Clear Rows
  28.     fp.MaxRows = 0
  29.     '/
  30.     If blnXLS Then
  31.         '/ Open XLS File
  32.         fp.OpenExcel2007File txtFileXLS.Text, "", -1, -1, ""
  33.         '/
  34.         Me.cmbWorkSheet.AddItem ("")
  35.         Dim i As Integer
  36.         For i = 0 To ListCount - 1
  37.             Me.cmbWorkSheet.AddItem (List(i))
  38.         Next
  39.     End If
  40.    
  41. ExitProc:
  42.     Exit Sub
  43.    
  44. ErrorHandler:   ' Error-handling routine.
  45.     MsgBox "Error: " & Err.Number & vbCrLf & Err.Description
  46.     Resume ExitProc
  47. End Sub
คัดลอกไปที่คลิปบอร์ด


โค้ดในการเลือก WorkSheet แล้วโหลดข้อมูลลงใน FarPoint Spread ...
  1. Private Sub cmbWorkSheet_Click()
  2.     Dim lRet As Long
  3.     If Not cmbWorkSheet.ListIndex = 0 Then
  4.         lRet = fp.ImportExcelSheet(fpHandle, cmbWorkSheet.ListIndex - 1)
  5.     End If
  6. End Sub
คัดลอกไปที่คลิปบอร์ด


โค้ดโปรแกรมทั้งหมด ...
  1. Option Explicit
  2. Dim fpHandle As Integer

  3. Private Sub cmbWorkSheet_Click()
  4.     Dim lRet As Long
  5.     If Not cmbWorkSheet.ListIndex = 0 Then
  6.         lRet = fp.ImportExcelSheet(fpHandle, cmbWorkSheet.ListIndex - 1)
  7.     End If
  8. End Sub

  9. Private Sub cmdExit_Click()
  10.     Unload Me
  11. End Sub

  12. Private Sub cmdOpenXLS_Click()
  13.     On Error GoTo ErrorHandler   ' Enable error-handling routine.
  14.    
  15.     Dim List() As String
  16.     Dim ListCount As Integer
  17.     Dim blnXLS As Boolean
  18.    
  19.     ReDim List(1)
  20.    
  21.     With dlgOpenFile
  22.         .FileName = "*.xls"
  23.         .DialogTitle = "Select Excel file to open"
  24.         .Filter = "Excel 97-2003 files (*.xls)|*.xls"
  25.         .FilterIndex = 0
  26.         .InitDir = App.Path
  27.         .Flags = cdlOFNHideReadOnly
  28.         .ShowOpen
  29.         
  30.         If .FileName = "*.xls" Then Exit Sub
  31.         
  32.         txtFileXLS.Text = .FileName
  33.         '/ GetExcelSheetList is a method and return boolean value.
  34.         blnXLS = fp.GetExcelSheetList(.FileName, List, ListCount, "", fpHandle, True)
  35.     End With
  36.    
  37.     cmbWorkSheet.Clear
  38.     '/ Clear Rows
  39.     fp.MaxRows = 0
  40.     '/
  41.     If blnXLS Then
  42.         '/ Open XLS File
  43.         fp.OpenExcel2007File txtFileXLS.Text, "", -1, -1, ""
  44.         '/
  45.         Me.cmbWorkSheet.AddItem ("")
  46.         Dim i As Integer
  47.         For i = 0 To ListCount - 1
  48.             Me.cmbWorkSheet.AddItem (List(i))
  49.         Next
  50.     End If
  51.    
  52. ExitProc:
  53.     Exit Sub
  54.    
  55. ErrorHandler:   ' Error-handling routine.
  56.     MsgBox "Error: " & Err.Number & vbCrLf & Err.Description
  57.     Resume ExitProc
  58. End Sub

  59. Private Sub Form_Load()
  60.     txtFileXLS.Text = ""
  61.     fp.MaxRows = 0
  62. End Sub

  63. Private Sub mnuExit_Click()
  64.     Unload Me
  65. End Sub

  66. Private Sub Form_Resize()
  67.     On Error Resume Next    '/ <-- Form_Resize must have this for ignore any error.
  68.     '//
  69.     fraOpenExcel.Width = Me.ScaleWidth - 30
  70.     fraFP.Width = fraOpenExcel.Width
  71.     fraFP.Height = Me.ScaleHeight - fraFP.Top
  72.     fp.Move 30, 240, Me.fraFP.Width - 90, fraFP.Height - 290
  73.     cmdExit.Left = fraOpenExcel.Width - cmdExit.Width - 75
  74. End Sub

  75. Private Sub Form_Unload(Cancel As Integer)
  76.     Set frmExcelImportFP = Nothing
  77.     End
  78. End Sub
คัดลอกไปที่คลิปบอร์ด


Conclusion: จะเห็นว่าการนำเข้าข้อมูลจาก Excel เพื่อนำมาแสดงผลในตัว FarPoint Spread ไม่ได้ยากเย็นเลยแม้แต่น้อย และหลังจากที่รันโปรแกรม ผู้ใช้ก็จะเสมือนทำงานอยู่บน Excel ดีๆนี่เอง นั่นก็จะทำให้เกิด Friendly Use หรือเป็นมิตรต่อผู้ใช้ตามไปด้วย ทำให้แทบไม่ต้องฝึกฝนอบรมผู้ใช้งานเพิ่มเติมใดๆเลย แต่มันก็ขึ้นอยู่กับเราจะออกแบบให้โปรแกรมมันเดินไปทิศทางไหนด้วยล่ะครับ ... สวัสดี


ดาวน์โหลดโค้ดโปรแกรมฉบับเต็มได้ที่นี่ ...

ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

x
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด

2

กระทู้

8

โพสต์

36

เครดิต

Newbie

Rank: 1

เครดิต
36
โพสต์ 2018-6-7 12:07:15 | ดูโพสต์ทั้งหมด

สวัสดีครับ ผม อยากได้ เอาข้อมูลออกเป้น excel แล้ว มี header ออกมาด้วย ผมทำได้ แต่ มี ข้อมูลออกมา อย่างเดียวครับ

Dim x As Boolean
     ' Export Excel file and set result to x
     x = spd.ExportToExcel("C:\Samples\FILE.XLS", "Test Sheet 1", "C:\Samples\LOGFILE.TXT")
         ' Display result to user based on T/F value of x
     If x = True Then
         MsgBox "Export complete.", , "Result"
     Else
         MsgBox "Export did not succeed.", , "Result"
     End If

320

กระทู้

512

โพสต์

6583

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
6583
 เจ้าของ| โพสต์ 2018-6-7 16:12:55 | ดูโพสต์ทั้งหมด

ใช้การ Save ออก Excel แทนครับผม
x = fp.SaveExcel2007File("C:\SampleExcelFile.xls", "", DataOnly, "C:\LogXLS.txt")
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด

2

กระทู้

8

โพสต์

36

เครดิต

Newbie

Rank: 1

เครดิต
36
โพสต์ 2018-6-7 17:54:27 | ดูโพสต์ทั้งหมด

แก้ไขครั้งสุดท้ายโดย sonthaya เมื่อ 2018-6-7 17:55
thongkorn ตอบกลับเมื่อ 2018-6-7 16:12
ใช้การ Save ออก Excel แทนครับผม
x = fp.SaveExcel2007File("C:\SampleExcelFile.xls", ...

มี error นี้ครับ  object doesn't support this property or method

ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

x

320

กระทู้

512

โพสต์

6583

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
6583
 เจ้าของ| โพสต์ 2018-6-7 22:33:06 | ดูโพสต์ทั้งหมด

ผมก็ทดสอบจากในโปรเจคนี้แหละครับ ... โดยใช้ FarPoint Spread เป็นตัวรับค่าจากอินพุท ซึ่งผมจำลองเอาด้วยการโหลดข้อมูลจาก Excel เข้ามาก่อน แล้วทำการส่งออก Export กลับไป Excel อีกรอบครับ (fp คือ FarPoint Spread ครับ)

Dim x As Boolean
x = fp.SaveExcel2007File("D:\ExcelFile.xls", "", DataOnly, "D:\LogXLS.txt")
' Export Excel file and set result to x
' Display result to user based on T/F value of x
If x Then
    MsgBox "Export complete.", , "Result"
Else
    MsgBox "Export did not succeed.", , "Result"
End If




สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด

2

กระทู้

8

โพสต์

36

เครดิต

Newbie

Rank: 1

เครดิต
36
โพสต์ 2018-6-8 10:55:47 | ดูโพสต์ทั้งหมด

thongkorn ตอบกลับเมื่อ 2018-6-7 22:33
ผมก็ทดสอบจากในโปรเจคนี้แหละครับ ... โดยใช้ FarPoint Spread เป ...

ได้ล่ะครับ ของผม farPoint Spread ไม่ update ผมโหลดของ อาจารย์ มา ดาวน์โหลดชุด Upgrade 8.0.21 จากผู้ผลิต  ใช้ได้แล้ว ขอบคุณครับ

320

กระทู้

512

โพสต์

6583

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
6583
 เจ้าของ| โพสต์ 2018-6-8 11:54:31 | ดูโพสต์ทั้งหมด

แหม ... กำลังจะโพสต์บอกอยู่แล้วเชียวครับว่าต้องปรับเวอร์ชั่นใหม่ 5555+
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด

2

กระทู้

6

โพสต์

74

เครดิต

Member

Rank: 2

เครดิต
74
โพสต์ 2018-6-20 14:03:06 | ดูโพสต์ทั้งหมด

แก้ไขครั้งสุดท้ายโดย sontha2499 เมื่อ 2018-6-20 14:05
thongkorn ตอบกลับเมื่อ 2018-6-8 11:54
แหม ... กำลังจะโพสต์บอกอยู่แล้วเชียวครับว่าต้องปรับเวอร์ชั่นใหม่ 5555+

มีติดอีกนิดนึงครับ เวลาexport header มัน ไม่มา มาแต่ data ครับ

ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

x

320

กระทู้

512

โพสต์

6583

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
6583
 เจ้าของ| โพสต์ 2018-6-21 20:48:27 | ดูโพสต์ทั้งหมด

ผมลองหาก็แล้ว ทดสอบก็แล้ว สรุปได้ว่าสำหรับ FarPoint Spread COM มันไม่น่าจะสามารถส่งค่า Header มาให้ได้ครับ แต่สำหรับเวอร์ชั่น .NET มันทำได้ ... หากต้องการจะใช้จริงๆก็ต้อง Loop เอาหลัก 0 เองครับ ตามโค้ดด้านล่างนี้ แต่มันจะช้า ไม่เหมาะกับจำนวนข้อมูลมากๆ ...
  1.     '// References อ้างอิงถึง Microsoft Excel 14.0 Object Library (MS Office 2010)
  2.     Dim ExcelApp As New Excel.Application
  3.     Dim ExcelBook As New Excel.Workbook
  4.    
  5.     Dim iRow As Long
  6.     Dim iCol As Integer
  7.     '// สร้าง Object ในการเชื่อมต่อกับ Application
  8.     Set ExcelApp = CreateObject("Excel.Application")
  9.     '// เพิ่ม WorkBooks เข้าไปใหม่
  10.     Set ExcelBook = ExcelApp.Workbooks.Add
  11.     '// นับจากแถว 0 เพื่อเอา Header ของ FarPoint (หรือตารางกริดอื่นๆ)
  12.     For iRow = 0 To fp.DataRowCnt - 1
  13.         '// ระบุแถว
  14.         fp.Row = iRow
  15.         For iCol = 1 To fp.DataColCnt
  16.             '// ระบุหลัก
  17.             fp.Col = iCol
  18.             '// ให้ FarPoint ชี้อยู่ (แถว, หลัก) นำค่าออกมา
  19.             ExcelApp.Cells(iRow + 1, iCol) = fp.Value
  20.         Next
  21.    
  22.     Next
  23.    
  24.     ' แสดงผลที่ได้ใน MS Excel
  25.     ExcelApp.Visible = True
  26.    
  27.     ' ปิดการใช้งานวัตถุ
  28.     Set ExcelApp = Nothing:    Set ExcelBook = Nothing
คัดลอกไปที่คลิปบอร์ด


สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|G2GNet.com  

GMT+7, 2024-11-27 21:22 , Processed in 0.149153 second(s), 5 queries , File On.

Powered by Discuz! X3.4, Rev.62

Copyright © 2001-2020 Tencent Cloud.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้