วิธี Update ลง Excel โดยเลือก Sheet ที่ต้องการแสดงได้
Posted: Mon Jan 06, 2014 10:54 pm
เนื่องจาก ตอนนี้กระผมสามารถ Update ข้อมูลลง Excel ได้แล้วครับ
แต่กระผมต้องการ เลือก Sheet ที่ต้องการจะ Update เช่น
ข้อมูลชุดที่ 1 แสดงใน Sheet1 ของ Excel
ข้อมูลชุดที่ 2 แสดงใน Sheet3 ของ Excel เดี่ยวกัน
ตัวอย่าง Code VB ครับ
ขอบคุณครับผม
แต่กระผมต้องการ เลือก Sheet ที่ต้องการจะ Update เช่น
ข้อมูลชุดที่ 1 แสดงใน Sheet1 ของ Excel
ข้อมูลชุดที่ 2 แสดงใน Sheet3 ของ Excel เดี่ยวกัน
ตัวอย่าง Code VB ครับ
Code: Select all
'เมื่อผู้ใช้กดปุ่ม "แสดงใน Excel"
Private Sub btnExcel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExcel.Click
Dim table As DataTable = dgvDataOutput1.DataSource '-- ข้อมูลชุดที่ 1
Dim tabae2 As DataTable = dgvDataOutput2.DataSource '--ข้อมูลชุดที่ 2
Dim headers() As String = {"ลำดับ", "สถานที่ส่งสินค้า", "ประเภทการขออนุมัติ", "จำนวนส่ง (เที่ยว)", "จำนวนตรวจสอบเที่ยว", "ผลต่าง", "ผู้ตรวจสอบ"}
Dim oXL As Excel.Application
Dim wbook As Excel.Workbook
Dim wsheet As Excel.Worksheet
Dim wRng As Excel.Range
oXL = CreateObject("Excel.Application")
wbook = oXL.Workbooks.Add
wsheet = wbook.ActiveSheet
oXL.Visible = True
oXL.UserControl = True
Dim title As String = "เรื่อง สรุปเศษวัสดุนำออกพื้นที่โรงงาน"
Dim product As String = "ชื่อสินค้า " & cbProduct.Text
Dim dmy As String
If _StrDate = _EndDate Then
dmy = "ประจำวันที่ " & _StrDate & " "
Else
dmy = "ประจำวันที่ " & _StrDate & " ถึง " & _EndDate & " "
End If
'--ยุบเซลล์ของแถวแรกแล้วแสดงข้อความไตเติล ที่รับเข้ามา
With wsheet.Range("B2", "H2")
.Merge()
.Value = title
.Font.Bold = True
.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter
.HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter
.Borders(Excel.XlBordersIndex.xlEdgeLeft).LineStyle = Excel.XlLineStyle.xlContinuous
.Borders(Excel.XlBordersIndex.xlEdgeRight).LineStyle = Excel.XlLineStyle.xlContinuous
.Borders(Excel.XlBordersIndex.xlEdgeTop).LineStyle = Excel.XlLineStyle.xlContinuous
.Borders(Excel.XlBordersIndex.xlEdgeBottom).LineStyle = Excel.XlLineStyle.xlContinuous
End With
'--ยุบเซลล์ของแถวแรกแล้วแสดงข้อความวันที่ ที่รับเข้ามา
With wsheet.Range("B3", "H3")
.Merge()
.Value = dmy & product
.Interior.ColorIndex = 36 '-- เติมสีภายในของส่วนหัว
.Font.Bold = True
.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter
.HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter
.Borders(Excel.XlBordersIndex.xlEdgeLeft).LineStyle = Excel.XlLineStyle.xlContinuous
.Borders(Excel.XlBordersIndex.xlEdgeRight).LineStyle = Excel.XlLineStyle.xlContinuous
.Borders(Excel.XlBordersIndex.xlEdgeTop).LineStyle = Excel.XlLineStyle.xlContinuous
.Borders(Excel.XlBordersIndex.xlEdgeBottom).LineStyle = Excel.XlLineStyle.xlContinuous
End With
'--ให้แถวแรกขอตาราง Excel แสดงชื่อคอลัมน์โดยชื่อคอลัมน์นี้จะอ่านจากตารางใน Dataset
For i = 0 To table.Columns.Count - 1
'--แถวแรกใน Excel มีลำดับเป็น 1 คงที่เพราะเป็นแถวเดียวกัน
'--ส่วนลำดับคอลัมน์จะเริ่มจาก 1 แล้วเพิ่มขึ้นเพราะเราอ่านคอลัมน์ถัดไปเรื่อยๆ
wsheet.Cells(4, i + 2) = headers(i)
wsheet.Cells(4, i + 2).Borders(Excel.XlBordersIndex.xlEdgeLeft).LineStyle = Excel.XlLineStyle.xlContinuous
wsheet.Cells(4, i + 2).Borders(Excel.XlBordersIndex.xlEdgeRight).LineStyle = Excel.XlLineStyle.xlContinuous
wsheet.Cells(4, i + 2).Borders(Excel.XlBordersIndex.xlEdgeTop).LineStyle = Excel.XlLineStyle.xlContinuous
wsheet.Cells(4, i + 2).Borders(Excel.XlBordersIndex.xlEdgeBottom).LineStyle = Excel.XlLineStyle.xlContinuous
Next
With wsheet.Range("B4", "H4")
.Font.Bold = True
.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter
.HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter
End With
'--วนลูปตามจำนวนแถวใน DataSet
For r = 0 To table.Rows.Count - 1
'--อ่านข้อมูลจากแต่ละคอลัมน์
For c = 0 To table.Columns.Count - 1
'--เริ่มเขียนจากแถวที่ 2 คอลัมน์ที่ 1
wsheet.Cells(r + 5, c + 2) = table.Rows(r)(c)
wsheet.Cells(r + 5, c + 2).Borders(Excel.XlBordersIndex.xlEdgeLeft).LineStyle = Excel.XlLineStyle.xlContinuous
wsheet.Cells(r + 5, c + 2).Borders(Excel.XlBordersIndex.xlEdgeRight).LineStyle = Excel.XlLineStyle.xlContinuous
wsheet.Cells(r + 5, c + 2).Borders(Excel.XlBordersIndex.xlEdgeTop).LineStyle = Excel.XlLineStyle.xlContinuous
wsheet.Cells(r + 5, c + 2).Borders(Excel.XlBordersIndex.xlEdgeBottom).LineStyle = Excel.XlLineStyle.xlContinuous
Next
Next
With wsheet.Columns("B")
.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter
.HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter
End With
With wsheet.Columns("D")
.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter
.HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter
End With
With wsheet.Columns("E")
.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter
.HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter
End With
wRng = wsheet.Range("B4", "H4")
wRng.EntireColumn.AutoFit()
wRng = Nothing
wsheet = Nothing
wbook = Nothing
oXL = Nothing
End Sub