|
Syncfusion Excel library (Essential XlsIO) เป็นไลบรารี .NET Excel ที่มีประสิทธิภาพสูง ที่ช่วยให้ผู้ใช้สามารถสร้าง, อ่าน หรือแก้ไขเอกสาร Excel ในแอพพลิเคชั่น .NET โดยที่ไม่ต้องใช้ Microsoft Office ว่าง่ายๆก็คือเป็นการใช้ Excel Engine ของตัว Syncfusion เองครับ สำหรับโค้ดชุดนี้จะเป็นการโหลดไฟล์ Excel เข้าสู่ Spreadsheet ของตัว Syncfusion จากนั้นทำการแปลงให้เป็นเอกสาร PDF ซึ่งก็เป็นของ Syncfusion เหมือนกัน และจากไฟล์ PDF ก็สามารถแปลงไฟล์ต่อไปเป็นกราฟิค โดยตัวอย่างนี้แอดมินเลือกใช้ไฟล์ PNG และสำหรับการโหลดไฟล์กราฟิคเข้าสู่ PictureBox Control แอดมินเลือกใช้ Stream เพื่อป้องกัน Process ที่ค้างอยู่ครับผม ...
ดาวน์โหลดของฟรี Syncfusion Essemtial รุ่น Community ได้ที่นี่ (Version 17.1.0.47)... ย้ำอีกทีว่าฟรี 100% แน่นอนครับ
เริ่มต้นด้วยการ Add References
มาดูโค้ดฉบับเต็มกันเถอะ ...
- Imports Syncfusion.XlsIO
- Imports Syncfusion.Pdf
- Imports Syncfusion.ExcelToPdfConverter
- Imports Syncfusion.Pdf.Parsing
- Imports System.Drawing.Imaging
- Imports System.IO
- Public Class frmSyncfusionMain
- '// File
- Dim strFileName As String = String.Empty
- Dim XlsFileName As String()
- ' / ---------------------------------------------------------------
- ' / Load Excel.
- ' / ---------------------------------------------------------------
- Private Sub btnLoadXLS_Click(sender As System.Object, e As System.EventArgs) Handles btnLoadXLS.Click
- Me.TabControlAdv1.SelectedIndex = 0
- '/ Open File Dialog in Run Time.
- Dim dlgOpenFile As OpenFileDialog = New OpenFileDialog()
- Try
- ' / Initialized Open File Dialog.
- With dlgOpenFile
- .InitialDirectory = MyPath(Application.StartupPath)
- .Title = "Select MS Excel File"
- .Filter = "MS Excel Files (*.xlsx;*.xls)|*.xlsx;*xls"
- .FilterIndex = 1
- .RestoreDirectory = True
- End With
- '/ If the OK button is selected.
- If dlgOpenFile.ShowDialog() = DialogResult.OK Then
- '// For save
- strFileName = dlgOpenFile.FileName
- Spreadsheet1.Open(strFileName)
- '// Xlsfilename(0) = "D:\SyncfusionFile\SyncfusionFile\GettingStarted"
- '// Xlsfilename(1) = "xlsx"
- XlsFileName = Split(strFileName, ".")
- End If
- Catch ex As Exception
- MessageBox.Show(ex.Message)
- End Try
- End Sub
- ' / ---------------------------------------------------------------
- ' / Convert Excel To PDF.
- ' / ---------------------------------------------------------------
- Private Sub btnXlsToPdf_Click(sender As System.Object, e As System.EventArgs) Handles btnXlsToPdf.Click
- If strFileName.Length = 0 Then
- MessageBox.Show("You did not load the Excel file.", "Report status", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
- Return
- End If
- Spreadsheet1.Save()
- '//
- Me.TabControlAdv1.SelectedIndex = 1
- '//
- Try
- Using excelEngine As ExcelEngine = New ExcelEngine()
- Dim application As IApplication = excelEngine.Excel
- application.DefaultVersion = ExcelVersion.Excel2013
- '// Load Excel to Workbook.
- Dim workbook As IWorkbook = application.Workbooks.Open(strFileName, ExcelOpenType.Automatic)
- '/ Open the Excel document to convert
- Dim converter As ExcelToPdfConverter = New ExcelToPdfConverter(workbook)
- '/ Initialize the PDF document
- Dim pdfDocument As PdfDocument = New PdfDocument()
- '/ Convert Excel document into PDF document
- pdfDocument = converter.Convert()
- '/ Save the PDF file
- pdfDocument.Save(XlsFileName(0) & ".pdf")
- End Using
- Me.PdfViewerControl1.Load(XlsFileName(0) + ".pdf", "")
- Catch ex As Exception
- MessageBox.Show(ex.Message)
- End Try
- End Sub
- ' / ---------------------------------------------------------------
- ' / Convert PDF To Image File.
- ' / ---------------------------------------------------------------
- Private Sub btnPdfToImage_Click(sender As System.Object, e As System.EventArgs) Handles btnPdfToImage.Click
- '// Trap Error if Nothing on PdfViewerControl1.
- If IsNothing(PdfViewerControl1.LoadedDocument) Then Exit Sub
- Me.TabControlAdv1.SelectedIndex = 2
- Call ClearPictureBox(PictureBox1)
- Try
- '/ Loaded input PDF file
- Dim loadedDocument As New PdfLoadedDocument(XlsFileName(0) & ".pdf")
- '/ Exporting specify page index as image
- Dim image As Bitmap = loadedDocument.ExportAsImage(0)
- '/ Save the image as PNG format
- image.Save(XlsFileName(0) & ".png", ImageFormat.Png)
- '/ Close the document
- loadedDocument.Close(True)
- '// Use Stream to show picture.
- Call ShowPicture(XlsFileName(0) & ".png")
- Catch ex As Exception
- MessageBox.Show(ex.Message)
- End Try
- End Sub
- ' / -----------------------------------------------------------------------------
- ' / Use Steam instead IO.
- ' / -----------------------------------------------------------------------------
- Sub ShowPicture(PicName As String)
- Dim imgDB As Image
- Dim streamPic As Stream
- '// Get the name of the image file from the database.
- '// Verify that the image file meets the specified location.
- If System.IO.File.Exists(PicName.ToString) Then
- ' Because when deleting the image file is locked, it can not be removed.
- ' The file is closed after the image is loaded, so you can delete the file if you need to
- streamPic = File.OpenRead(PicName.ToString)
- imgDB = Image.FromStream(streamPic)
- PictureBox1.Image = imgDB
- streamPic.Dispose()
- End If
- End Sub
- Private Sub ClearPictureBox(ByRef pb As PictureBox)
- pb.Image = Nothing
- pb.BackColor = Color.Empty
- pb.Invalidate()
- End Sub
- ' / --------------------------------------------------------------------------------
- ' / Get my project path
- ' / AppPath = C:\My Project\bin\debug
- ' / Replace "\bin\debug" with ""
- ' / Return : C:\My Project\
- Function MyPath(ByVal AppPath As String) As String
- '/ MessageBox.Show(AppPath);
- AppPath = AppPath.ToLower()
- '/ Return Value
- MyPath = AppPath.Replace("\bin\debug", "").Replace("\bin\release", "").Replace("\bin\x86\debug", "")
- '// If not found folder then put the \ (BackSlash) at the end.
- If Microsoft.VisualBasic.Right(MyPath, 1) <> Chr(92) Then MyPath = MyPath & Chr(92)
- End Function
- Private Sub btnExit_Click(sender As System.Object, e As System.EventArgs) Handles btnExit.Click
- Me.Close()
- End Sub
- Private Sub frmSyncfusionMain_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
- Me.Dispose()
- Application.Exit()
- End Sub
- End Class
คัดลอกไปที่คลิปบอร์ด
ดาวน์โหลดโค้ดฉบับเต็ม VB.NET (2010) ได้ที่นี่ ...
|
ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง
คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน
x
|