Create Excel by VB.net

หัวข้อนี้ ผมจะมาแนะนำการสร้าง excel file จาก VB.NET ครับ
โดยมีการ กำหนด รูปแบบแสดงผลของ ข้อมูลใน sheet
โดยในที่นี้จะเป็นการเขียนข้อมูลลงบน text file ก่อน แล้วค่อยนำ text file มาเขียนลงบน excel อีกทีครับ
หลังจากนั้นจึงค่อยเปิดไฟล์ excel ที่ได้มาปรับแต่งรูปแบบอีกครั้ง

เมื่อสร้าง form แล้ว ให้ใส่โค้ดดังนี้



Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim _fileNameTAB As String = "D:\tmp_" & Trim(Format(DateTimePicker1.Value, "ddMMyyyy")) & ".txt"
Dim FileName As String = "D:\report_" & Trim(Format(DateTimePicker1.Value, "ddMMyyyy")) & ".xls"
If System.IO.File.Exists(_fileNameTAB) Then System.IO.File.Delete(_fileNameTAB)
Dim fs As System.IO.FileStream = System.IO.File.Create(_fileNameTAB)
Dim writer As New System.IO.StreamWriter(fs)
' Open txt file with Excel for decoration
Dim xlsAPP As New Microsoft.Office.Interop.Excel.Application
Dim xlsBook As Microsoft.Office.Interop.Excel.Workbook


Try
'*** Create txt file ***'
writer.WriteLine("TEST Data")

writer.Close()
writer.Dispose()
fs.Close()
fs.Dispose()
Catch ex As Exception

writer.Close()
writer.Dispose()
fs.Close()
fs.Dispose()

Exit Sub

End Try

ProgressBar1.Value = 2


Try

'*** Create excel file ***'
xlsAPP.Visible = False
xlsBook = xlsAPP.Workbooks.Open(_fileNameTAB)

'*** Create excel style ***'
DecorateExcel(xlsBook)

' Save as Excel2007
If System.IO.File.Exists(FileName) Then System.IO.File.Delete(FileName)
xlsBook.SaveAs(FileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlOpenXMLWorkbook)
xlsBook.Close(SaveChanges:=False)

xlsAPP.Quit()

System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsAPP)
GC.SuppressFinalize(xlsAPP)
GC.Collect()
xlsBook = Nothing
xlsAPP = Nothing

System.IO.File.Delete(_fileNameTAB)

Catch ex As Exception
xlsAPP.Quit()
xlsBook = Nothing
xlsAPP = Nothing
System.IO.File.Delete(_fileNameTAB)

End Try

End Sub



อันนี้เป็นโค้ด กำหนด style ให้ excel
กำหนด font , style font ,MergeCells ,background color


Private Sub DecorateExcel(ByVal xlsBook As Microsoft.Office.Interop.Excel.Workbook)

Dim xlsSheet As Microsoft.Office.Interop.Excel.Worksheet = Nothing
xlsSheet = xlsBook.ActiveSheet
xlsSheet.Range("A1:K1").EntireColumn.AutoFit()

With xlsSheet.Range("A1:B1")
.Font.Size = "9"
.Bold = True
End With

With xlsSheet.Range("A1:B1")
.Borders.Weight = 2
.Interior.Color = System.Drawing.Color.Silver.ToArgb
.MergeCells = True
End With

End Sub







บทความอื่นๆ

Use Crystal Report + Datatable by ASP.net

ไม่มีความคิดเห็น: