An easy to understand guide on how to generate invoice with spreadsheet sdk in VB.NET with this source code sample. ByteScout Data Extraction Suite is the bundle that includes three SDK tools for data extraction from PDF, scans, images and from spreadsheets: PDF Extractor SDK, Data Extraction SDK, Barcode Reader SDK. It can be applied to generate invoice with spreadsheet sdk using VB.NET.
These VB.NET code samples for VB.NET guide developers to speed up coding of the application when using ByteScout Data Extraction Suite. Just copy and paste the code into your VB.NET application’s code and follow the instructions. This basic programming language sample code for VB.NET will do the whole work for you to generate invoice with spreadsheet sdk.
You can download free trial version of ByteScout Data Extraction Suite from our website to see and try many others source code samples for VB.NET.
On-demand (REST Web API) version:
Web API (on-demand version)
On-premise offline SDK for Windows:
60 Day Free Trial (on-premise)
Imports System.Drawing
Imports Bytescout.Spreadsheet
Module Program
Sub Main()
Try
' STEP-1: Get Invoice Data
Dim oInvoiceData = GetInvoiceData()
' STEP-2: Generate Invoice in memory
Dim document = _GetSpreadsheet(oInvoiceData)
' Step-3: Export to XLS, XLSX and PDF
document.SaveAsXLSX("Invoice.xlsx")
document.SaveAsXLS("Invoice.xls")
document.SaveAsPDF("Invoice.pdf")
' Open output file
Process.Start("Invoice.xlsx")
Process.Start("Invoice.pdf")
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
Console.WriteLine("Press enter key to exit...")
Console.ReadLine()
End Sub
''' <summary>
''' Get Spreadsheet
''' </summary>
Private Function _GetSpreadsheet(ByVal oInvoiceData As InvoiceData) As Spreadsheet
' Create new Spreadsheet
Dim document As Spreadsheet = New Spreadsheet()
document.Workbook.AutoCalculation = True
document.Workbook.DefaultFont = New SpreadsheetFont("Arial", 10)
' Add new worksheet
Dim Sheet As Worksheet = document.Workbook.Worksheets.Add("Invoice")
Dim startRow As Integer = 0
' 1. Write Company Name
Sheet.Cell(startRow, 0).Value = oInvoiceData.CompanyName
Sheet.Cell(startRow, 0).Font = New Font("Arial", 15, FontStyle.Bold Or FontStyle.Italic)
' 2. Write Company Address
Sheet.Cell((System.Threading.Interlocked.Increment(startRow)), 0).Value = oInvoiceData.CompanyAddress1
Sheet.Cell((System.Threading.Interlocked.Increment(startRow)), 0).Value = oInvoiceData.CompanyAddress2
startRow += 1
' 3. Write Invoice Info
Sheet.Cell((System.Threading.Interlocked.Increment(startRow)), 2).Value = "Invoice No."
Sheet.Cell(startRow, 2).Font = New Font("Arial", 10, FontStyle.Bold)
Sheet.Cell(startRow, 2).AlignmentHorizontal = Bytescout.Spreadsheet.Constants.AlignmentHorizontal.Right
Sheet.Cell(startRow, 3).Value = oInvoiceData.InvoiceNo
Sheet.Cell((System.Threading.Interlocked.Increment(startRow)), 2).Value = "Invoice Date."
Sheet.Cell(startRow, 2).Font = New Font("Arial", 10, FontStyle.Bold)
Sheet.Cell(startRow, 2).AlignmentHorizontal = Bytescout.Spreadsheet.Constants.AlignmentHorizontal.Right
Sheet.Cell(startRow, 3).ValueAsDateTime = oInvoiceData.InvoiceDate
Sheet.Cell(startRow, 3).NumberFormatString = "mm/dd/yyyy"
' 4. Write Client Info
Sheet.Cell((System.Threading.Interlocked.Increment(startRow)), 0).Value = oInvoiceData.ClientName
Sheet.Cell(startRow, 0).Font = New Font("Arial", 12, FontStyle.Bold)
Sheet.Cell((System.Threading.Interlocked.Increment(startRow)), 0).Value = oInvoiceData.ClientAddress1
Sheet.Cell((System.Threading.Interlocked.Increment(startRow)), 0).Value = oInvoiceData.ClientAddress2
startRow += 1
' 5. Write Notes
Sheet.Cell((System.Threading.Interlocked.Increment(startRow)), 0).Value = "Notes"
Sheet.Cell(startRow, 0).Font = New Font("Arial", 12, FontStyle.Bold)
Sheet.Cell((System.Threading.Interlocked.Increment(startRow)), 0).Value = oInvoiceData.Notes
startRow += 2
' 6. Add Product Listing
Dim startAddress As String = ""
Dim endAddress As String = ""
Sheet.Cell((System.Threading.Interlocked.Increment(startRow)), 0).Value = "Item"
_AddAllBorders(Sheet.Cell(startRow, 0))
Sheet.Cell(startRow, 0).Font = New Font("Arial", 11, FontStyle.Bold)
Sheet.Cell(startRow, 1).Value = "Quantity"
_AddAllBorders(Sheet.Cell(startRow, 1))
Sheet.Cell(startRow, 1).AlignmentHorizontal = Bytescout.Spreadsheet.Constants.AlignmentHorizontal.Right
Sheet.Cell(startRow, 1).Font = New Font("Arial", 11, FontStyle.Bold)
Sheet.Cell(startRow, 2).Value = "Price"
_AddAllBorders(Sheet.Cell(startRow, 2))
Sheet.Cell(startRow, 2).AlignmentHorizontal = Bytescout.Spreadsheet.Constants.AlignmentHorizontal.Right
Sheet.Cell(startRow, 2).Font = New Font("Arial", 11, FontStyle.Bold)
Sheet.Cell(startRow, 3).Value = "Total"
_AddAllBorders(Sheet.Cell(startRow, 3))
Sheet.Cell(startRow, 3).AlignmentHorizontal = Bytescout.Spreadsheet.Constants.AlignmentHorizontal.Right
Sheet.Cell(startRow, 3).Font = New Font("Arial", 11, FontStyle.Bold)
For i As Integer = 0 To oInvoiceData.lstProducts.Count - 1
Sheet.Cell((System.Threading.Interlocked.Increment(startRow)), 0).Value = oInvoiceData.lstProducts(i).ProductName
_AddAllBorders(Sheet.Cell(startRow, 0))
Sheet.Cell(startRow, 1).Value = oInvoiceData.lstProducts(i).Quantity
Sheet.Cell(startRow, 1).AlignmentHorizontal = Bytescout.Spreadsheet.Constants.AlignmentHorizontal.Right
_AddAllBorders(Sheet.Cell(startRow, 1))
Sheet.Cell(startRow, 2).Value = oInvoiceData.lstProducts(i).Price
Sheet.Cell(startRow, 2).AlignmentHorizontal = Bytescout.Spreadsheet.Constants.AlignmentHorizontal.Right
_AddAllBorders(Sheet.Cell(startRow, 2))
' Calculated cell
Dim formulaMultiplication As String = String.Format("={0}*{1}", Sheet.Cell(startRow, 1).GetAddress().ToString(), Sheet.Cell(startRow, 2).GetAddress().ToString())
Sheet.Cell(startRow, 3).Formula = formulaMultiplication
Sheet.Cell(startRow, 3).AlignmentHorizontal = Bytescout.Spreadsheet.Constants.AlignmentHorizontal.Right
_AddAllBorders(Sheet.Cell(startRow, 3))
' Address to be used for total sum
If i = 0 Then
startAddress = Sheet.Cell(startRow, 3).GetAddress().ToString()
End If
endAddress = Sheet.Cell(startRow, 3).GetAddress().ToString()
Next
Sheet.Cell((System.Threading.Interlocked.Increment(startRow)), 2).Value = "TOTAL"
Sheet.Cell(startRow, 2).AlignmentHorizontal = Constants.AlignmentHorizontal.Right
Sheet.Cell(startRow, 2).Font = New Font("Arial", 11, FontStyle.Bold)
Dim formulaTotalSum As String = String.Format("=SUM({0}:{1})", startAddress, endAddress)
Sheet.Cell(startRow, 3).Formula = formulaTotalSum
Sheet.Cell(startRow, 3).Font = New Font("Arial", 11, FontStyle.Bold)
Sheet.Cell(startRow, 3).AlignmentHorizontal = Bytescout.Spreadsheet.Constants.AlignmentHorizontal.Right
' AutoFit all columns
Sheet.Columns.Item(0).AutoFit()
Sheet.Columns.Item(1).AutoFit()
Sheet.Columns.Item(2).AutoFit()
Sheet.Columns.Item(3).AutoFit()
' Return all formatted document
Return document
End Function
''' <summary>
''' Add borders to cell
''' </summary>
Private Sub _AddAllBorders(ByVal cell As Cell)
cell.LeftBorderStyle = Bytescout.Spreadsheet.Constants.LineStyle.Thin
cell.RightBorderStyle = Bytescout.Spreadsheet.Constants.LineStyle.Thin
cell.TopBorderStyle = Bytescout.Spreadsheet.Constants.LineStyle.Thin
cell.BottomBorderStyle = Bytescout.Spreadsheet.Constants.LineStyle.Thin
End Sub
''' <summary>
''' Gets Sample invoice data
''' </summary>
Private Function GetInvoiceData() As InvoiceData
Dim oRet = New InvoiceData With {
.CompanyName = "Your Company Name",
.CompanyAddress1 = "Your Address",
.CompanyAddress2 = "City, State Zip",
.ClientName = "Client Name",
.ClientAddress1 = "Address",
.ClientAddress2 = "City, State Zip",
.InvoiceNo = "123456",
.InvoiceDate = DateTime.Now,
.Notes = "Some notes...",
.lstProducts = New List(Of InvoiceProduct) From {
New InvoiceProduct With {
.ProductName = "Product 1",
.Price = 30,
.Quantity = 10
},
New InvoiceProduct With {
.ProductName = "Product 2",
.Price = 40,
.Quantity = 30
},
New InvoiceProduct With {
.ProductName = "Product 3",
.Price = 50,
.Quantity = 15
},
New InvoiceProduct With {
.ProductName = "Product 4",
.Price = 20,
.Quantity = 20
}
}
}
Return oRet
End Function
#Region "Invoice Class"
Public Class InvoiceData
Public Sub New()
lstProducts = New List(Of InvoiceProduct)()
End Sub
Public Property CompanyName As String
Public Property CompanyAddress1 As String
Public Property CompanyAddress2 As String
Public Property InvoiceNo As String
Public Property InvoiceDate As DateTime
Public Property ClientName As String
Public Property ClientAddress1 As String
Public Property ClientAddress2 As String
Public Property Notes As String
Public Property lstProducts As List(Of InvoiceProduct)
End Class
Public Class InvoiceProduct
Public Property ProductName As String
Public Property Quantity As Integer
Public Property Price As Decimal
End Class
#End Region
End Module
60 Day Free Trial or Visit ByteScout Data Extraction Suite Home Page
Explore ByteScout Data Extraction Suite Documentation
Explore Samples
Sign Up for ByteScout Data Extraction Suite Online Training
Get Your API Key
Explore Web API Docs
Explore Web API Samples
60 Day Free Trial or Visit ByteScout Data Extraction Suite Home Page
Explore ByteScout Data Extraction Suite Documentation
Explore Samples
Sign Up for ByteScout Data Extraction Suite Online Training
Get Your API Key
Explore Web API Docs
Explore Web API Samples
also available as: