โดยมีการ กำหนด รูปแบบแสดงผลของ ข้อมูลใน 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
ไม่มีความคิดเห็น:
แสดงความคิดเห็น