ต้องการกำหนดขนาด font ให้ Loop เพิ่มรายละเอียดข้อมูลใน Excel
ต้องการกำหนดขนาด font ของLoop เพิ่มรายละเอียดข้อมูล ตั้งแต่บรรทัดที่6 เป็นต้นไปให้มีขนาด font เท่ากับ 7 ต้องเพิ่มโค๊ดอะไรครับ
อันนี้โค๊ดที่ใช้
Code (VB.NET)
Private Sub GirdToExcel(ByRef dgvw As DataGridView)
Dim excel As New Microsoft.Office.Interop.Excel.Application
Dim Libro As Microsoft.Office.Interop.Excel.Workbook
Dim Hoja As Microsoft.Office.Interop.Excel.Worksheet
Dim col As Integer = dgv1.ColumnCount
Dim row As Integer = dgv1.RowCount
Libro = excel.Workbooks.Add
Hoja = excel.Worksheets.Add()
excel.Workbooks(1).Worksheets(1).cells(1, 1).columnWidth = 10
excel.Workbooks(1).Worksheets(1).cells(1, 1).RowHeight = 20
With excel.ActiveSheet.Range("A1:P1")
.MergeCells = True
End With
With excel.ActiveSheet.Range("A3:P3")
.MergeCells = True
End With
For i As Integer = 1 To col
Hoja.Cells.Item(1, i) = dgv1.Columns(i - 1).Name.ToString
Next
excel.Workbooks(1).Worksheets(1).cells(1, 1).value = "รายงานการรับงานของเจ้าหน้าที่ประเมินตามวันที่"
excel.Workbooks(1).Worksheets(1).cells(3, 1).value = "จากวันที : " & dtp1.Value.ToShortDateString() & " " & "ถึงวันที่ : " & dtp2.Value.ToShortDateString()
excel.Workbooks(1).Worksheets(1).cells(5, 1).value = "หลักประกัน"
excel.Workbooks(1).Worksheets(1).cells(5, 2).value = "วันที่รับงาน"
excel.Workbooks(1).Worksheets(1).cells(5, 3).value = "ชื่อ"
excel.Workbooks(1).Worksheets(1).cells(5, 4).value = "รหัสรายงาน"
excel.Workbooks(1).Worksheets(1).cells(5, 5).value = "ตำบล"
excel.Workbooks(1).Worksheets(1).cells(5, 6).value = "อำเถอ"
excel.Workbooks(1).Worksheets(1).cells(5, 7).value = "จังหวัด"
excel.Workbooks(1).Worksheets(1).cells(5, 8).value = "ประเภททรัพย์สิน"
excel.Workbooks(1).Worksheets(1).cells(5, 9).value = "กำหนดส่ง"
excel.Workbooks(1).Worksheets(1).cells(5, 10).value = "วันที่ส่งรายงาน"
excel.Workbooks(1).Worksheets(1).cells(5, 11).value = "วันที่ส่ง PS"
excel.Workbooks(1).Worksheets(1).cells(5, 12).value = "สถานะงาน"
excel.Workbooks(1).Worksheets(1).cells(5, 13).value = "ค่าบริการ"
excel.Workbooks(1).Worksheets(1).cells(5, 14).value = "ค่าบริการ PS"
excel.Workbooks(1).Worksheets(1).cells(5, 15).value = "จนท.ประเมิน 1"
excel.Workbooks(1).Worksheets(1).cells(5, 16).value = "จนท.ประเมิน 2"
For fila As Integer = 0 To row - 1
For e As Integer = 0 To col - 1
Hoja.Cells.Item(fila + 6, e + 1) = dgv1.Rows(fila).Cells(e).Value
Next
Next
Hoja.Rows.Item(1).font.bold = 1
Hoja.Rows.Item(3).font.bold = 1
Hoja.Rows.Item(5).font.bold = 1
Hoja.Rows.Item(1).font.size = 7
Hoja.Rows.Item(3).font.size = 7
Hoja.Rows.Item(5).font.size = 7
Hoja.PageSetup.Orientation = Microsoft.Office.Interop.Excel.XlPageOrientation.xlLandscape
Hoja.Rows.Item(1).horizontalAlignment = 3
Hoja.Rows.Item(3).horizontalAlignment = 3
Hoja.Columns.AutoFit()
excel.Application.Visible = True
excel.Application.WindowState = Microsoft.Office.Interop.Excel.XlWindowState.xlMaximized
Hoja = Nothing
Libro = Nothing
excel = Nothing
End Sub
Tag : .NET, Ms SQL Server 2008, Excel (Excel.Application), VS 2008 (.NET 3.x)
Date :
2018-09-26 16:50:37
By :
futurezax
View :
1393
Reply :
4
ไม่แน่ใจว่าถูกไหมนะ
Code (VB.NET)
For fila As Integer = 0 To row - 1
For e As Integer = 0 To col - 1
Hoja.Cells.Item(fila + 6, e + 1) = dgv1.Rows(fila).Cells(e).Value
Hoja.Cells(fila + 6, e + 1).Font.Size = 7
Next
Next
Date :
2018-09-26 17:24:46
By :
realizejoke
ผมว่า ทางที่ดี ควร สร้างไฟล์ excel ต้นแบบมาใช้งานจะเหมาะกว่า
เพราะจากที่ดู จะต้องจัดกันอีกเยอะ ถึงจะเข้าที่
การใช้งาน จะ ก๊อบ ไฟล์ ไปเปลี่ยนชื่อ หรือ เซพทับไฟล์เดิมก็ขึ้นกับ จขกท
จัดหน้าสวยๆหล่อ ๆเอา ที่ถูกใจ แล้วก็ให้เป็น ไฟล์ blank ข้อมูลว่างๆ
เวลาเรียกใช้ก็แค่ วนลูป ป้อนข้อมูล เราจะได้ไม่ต้อง เสียเวลา สร้างหน้าตาใหม่ทุกครั้งครับ
อย่างผลสอบเทียบของผมก็จะประมาณนี้ครับ
แล้วก็เขียนโค้ดใส่ข้อมูลลงไป จะง่ายกว่าที่เราเขียนโค้ดที่จะมาออกแบบ excel
เพราะเราต้องมานั่ง รันแล้วรันอีก ว่ามันสวยใช้ได้รึยัง
Date :
2018-09-26 18:29:37
By :
lamaka.tor
ตอบความคิดเห็นที่ : 3 เขียนโดย : futurezax เมื่อวันที่ 2018-09-27 10:04:57
รายละเอียดของการตอบ ::
หลักการมีแค่
1. สร้างไฟล์ excel ต้นแบบปล่าวๆ ขึ้นมา 1 ไฟล์
2. ตอนใช้งาน เขียนโค้ด
Code (VB.NET)
System.IO.File.Coppy("ไฟล์ต้นแบบ","ไฟล์ปลายทาง")
3. วนลูปข้อมูลเพื่อเอา ข้อมูลไปใสใน excel
ซึ่งเราจะตัด
Code (VB.NET)
excel.Workbooks(1).Worksheets(1).cells(5, 1).value = "หลักประกัน"
excel.Workbooks(1).Worksheets(1).cells(5, 2).value = "วันที่รับงาน"
excel.Workbooks(1).Worksheets(1).cells(5, 3).value = "ชื่อ"
excel.Workbooks(1).Worksheets(1).cells(5, 4).value = "รหัสรายงาน"
excel.Workbooks(1).Worksheets(1).cells(5, 5).value = "ตำบล"
excel.Workbooks(1).Worksheets(1).cells(5, 6).value = "อำเถอ"
excel.Workbooks(1).Worksheets(1).cells(5, 7).value = "จังหวัด"
excel.Workbooks(1).Worksheets(1).cells(5, 8).value = "ประเภททรัพย์สิน"
excel.Workbooks(1).Worksheets(1).cells(5, 9).value = "กำหนดส่ง"
excel.Workbooks(1).Worksheets(1).cells(5, 10).value = "วันที่ส่งรายงาน"
excel.Workbooks(1).Worksheets(1).cells(5, 11).value = "วันที่ส่ง PS"
excel.Workbooks(1).Worksheets(1).cells(5, 12).value = "สถานะงาน"
excel.Workbooks(1).Worksheets(1).cells(5, 13).value = "ค่าบริการ"
excel.Workbooks(1).Worksheets(1).cells(5, 14).value = "ค่าบริการ PS"
excel.Workbooks(1).Worksheets(1).cells(5, 15).value = "จนท.ประเมิน 1"
excel.Workbooks(1).Worksheets(1).cells(5, 16).value = "จนท.ประเมิน 2"
ตัว
Code (VB.NET)
excel.Workbooks(1).Worksheets(1).cells(3, 1).value = "จากวันที : " & dtp1.Value.ToShortDateString() & " " & "ถึงวันที่ : " & dtp2.Value.ToShortDateString()
เราก็จัดสวยๆหน่อย
เอา "จากวันที : " และ "ถึงวันที่ : " ไปใส่ใน ฟอร์มเลย แยกเป็น 2 Cell
เราก็แค่เติม
excel.Workbooks(1).Worksheets(1).cells(3, 1).value = dtp1.Value.ToShortDateString()
excel.Workbooks(1).Worksheets(1).cells(5, 1).value = dtp2.Value.ToShortDateString()
แยกเป็น 2 Cell
แค่นี้ก็งามตามแล้วครับ
อ่อๆๆ อย่าลืม ทำเส้นตารางด้วยนะครับ
ส่วน เนื้อหาต่างๆ ที่ต้องวนลูกก็วนลูปได้ปกติ ครับ
สิ่งที่สำคัญในการเล่นกับ excel คือ มัน มีหน้า
ถ้าเราวนไปเรื่อยๆ โดยไม่จัดเป็นหน้าๆ จะเห็นว่า พอแถวมันเยอะจนต้องขึ้นหน้า 2 เราจะไม่มีหัวเรื่อง
ดังนั้นก็กำหนด แถว ใน for loop ได้เลย อย่าง เช่น 1 หน้า ให้มีซัก 20 แถว
พอเกิน 20 แถวก็ให้ขึ้นหน้าใหม่
การสร้างฟอร์ม ใน excel ไว้รองรับ จะช่วยกะได้ว่า หน้า 2 เริ่มจากแถวที่เท่าไหร่
เช่น
ตัวนี้ผมเตรียมเผื่อไว้ 3 หน้า
จะสังเกตว่า พอเรา Add data เข้าไป ถึง แถวที่ 43 มันจะต้องข้ามไป Add data ในแถวที่ 60
ลองคิดเล่นๆดูครับ ว่าจะวนลูปยังไง
Date :
2018-09-27 10:52:42
By :
lamaka.tor
Load balance : Server 00