Tuesday, June 24, 2008

Export to Excel

Click event of button to export contact to Excel or spreadsheet.

Protected Sub excelvCard_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles excelvCard.Click
Try
Dim stringWrite As New System.IO.StringWriter()
Dim htmlWrite As New System.Web.UI.HtmlTextWriter(stringWrite)
Dim ml_directoryPath As String = Server.MapPath("~/DesktopModules/Employee/ExportEmployee/")
If Directory.Exists(ml_directoryPath) Then
Directory.Delete(ml_directoryPath, True)
End If
Directory.CreateDirectory(ml_directoryPath)
ExportContactsToExcel(ml_directoryPath)
Response.Clear()
Response.ContentType = "application/Excel"
Response.AppendHeader("content-disposition", "attachment;filename=Contacts.csv")
Response.TransmitFile((ml_directoryPath + "Employees.csv"))
Response.Flush()
Response.End()
Catch ex As Exception
End Try
End Sub

////Function for Export contact to Excel///

Public Shared Function ExportContactsToExcel(ByVal destinationFilepath As String) As String
Dim emplist As New ArrayList
Dim ExportList As New List(Of Modules.Employee.EmployeeInfo)
ExportList = Modules.Employee.EmployeeController.GetAllEmployeeForExport()
Dim ml_filePath As String = destinationFilepath
ml_filePath = (ml_filePath + "Employees.csv")
Dim o_fsCsvFile As FileStream = New FileStream(ml_filePath, FileMode.Create)
Dim o_swCsvFile As StreamWriter = New StreamWriter(o_fsCsvFile)
o_swCsvFile.WriteLine("FirstName,LastName,DateOfBirth,Parmanent Address,Local Address,Home Phone,Cell Phone,Emer. Contact Name,Emer. Contact Relation,Emer.Contact Home Phone,Emer.Contact Cell Phone,Physically Disabled,Blood Group,Manager Name,Current Designation,Pan Number,Passport Number,Hire Date,Termination Date")
Dim o_sbContact As System.Text.StringBuilder = New System.Text.StringBuilder
For Each exportEmp As EmployeeInfo In ExportList
o_sbContact.Append((exportEmp.Name + ","))
o_sbContact.Append((exportEmp.LastName + ","))
o_sbContact.Append((exportEmp.DateOfBirth + ","))
o_sbContact.Append((exportEmp.PermanentAddress + ","))
o_sbContact.Append((exportEmp.LocalAddress + ","))
o_sbContact.Append((exportEmp.PhoneNumber + ","))
o_sbContact.Append((exportEmp.MobileNumber + ","))
o_sbContact.Append((exportEmp.EmgContactName + ","))
o_sbContact.Append((exportEmp.Email + ","))
o_sbContact.Append((exportEmp.Relation + ","))
o_sbContact.Append((exportEmp.Emg_ContactPhoneNumber + ","))
o_sbContact.Append((exportEmp.Emg_ContactMobileNumber + ","))
'o_sbContact.Append((exportEmp.Cast.ToString() + ","))
o_sbContact.Append((exportEmp.PhysicallyDisabled + ","))
o_sbContact.Append((exportEmp.BloodGroup + ","))
o_sbContact.Append((exportEmp.ManagerName + ","))
o_sbContact.Append((exportEmp.CurrentPosition + ","))
o_sbContact.Append((exportEmp.PanNumber + ","))
o_sbContact.Append((exportEmp.PassPortNumber + ","))
o_sbContact.Append((exportEmp.HireDate + ","))
o_sbContact.Append((exportEmp.TerminationDate + ","))
o_swCsvFile.WriteLine(o_sbContact.ToString())
o_sbContact.Remove(0, o_sbContact.Length)
Next
o_swCsvFile.Close()
Return ml_filePath
End Function

Export contacts to vCard

///need a dll for that as well for vCard functinality
named --> Thought.Net.vCards
http://www.thoughtproject.com/Libraries/vCard/

///function to export the contacts
Public Shared Function ExportAllContacts(ByVal destinationFilepath As String) As String
'intiallizing file streams to read and write data
Dim ml_filePath As String = (destinationFilepath + "vCard.vcf")
Dim ml_tempfilePath As String = (destinationFilepath + "tempvCard.vcf")
Dim fs As FileStream = New FileStream(ml_filePath, FileMode.Append)
Dim fsTemp As FileStream = New FileStream(ml_tempfilePath, FileMode.Create)
fsTemp.Close()
'inalizing controller and data object
Dim emplist As New ArrayList
Dim ExportList As New List(Of Modules.Employee.EmployeeInfo)
ExportList = Modules.Employee.EmployeeController.GetAllEmployeeForExport()

For Each exportEmp As EmployeeInfo In ExportList
Dim EmployeevCard As New vCard
EmployeevCard.Organization = ""
EmployeevCard.GivenName = exportEmp.Name.ToString()
EmployeevCard.FamilyName = exportEmp.LastName.ToString()
EmployeevCard.Role = exportEmp.CurrentPosition.ToString()
EmployeevCard.EmailAddresses.Add(New vCardEmailAddress(exportEmp.Email))
EmployeevCard.Phones.Add(New vCardPhone(exportEmp.MobileNumber))
EmployeevCard.BirthDate = exportEmp.DateOfBirth
Dim EmployeeAddressvCard As vCardDeliveryAddress = New vCardDeliveryAddress
EmployeeAddressvCard.AddressType = vCardDeliveryAddressType.Home
EmployeeAddressvCard.City = exportEmp.PermanentAddress
EmployeevCard.DeliveryAddresses.Add(EmployeeAddressvCard)

Dim writer As vCardStandardWriter = New vCardStandardWriter
writer.EmbedInternetImages = False
writer.EmbedLocalImages = True
writer.Options = vCardStandardWriterOptions.IgnoreCommas
writer.Write(EmployeevCard, ml_tempfilePath)
Dim reader As StreamReader = New StreamReader(ml_tempfilePath)
Dim wr As StreamWriter = New StreamWriter(fs)
Dim str As String = reader.ReadToEnd
wr.WriteLine(str)
reader.Close()
wr.Flush()
wr.Close()
fs = New FileStream(ml_filePath, FileMode.Append)
Next
fs.Close()
Return ml_filePath
' returning path of file
End Function



///Click event of a link bttton to export the contacts



Protected Sub multipersonVCard_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles multipersonVCard.Click
Try
Dim ml_directoryPath As String = Server.MapPath("~/DesktopModules/Employee/ExportEmployee/")
If Directory.Exists(ml_directoryPath) Then
Directory.Delete(ml_directoryPath, True)
End If
Directory.CreateDirectory(ml_directoryPath)
'for vcard download
Dim ml_filePath As String = ExportAllContacts(ml_directoryPath)
Response.Clear()
'for card download
Response.ContentType = "text/x-vcard"
Response.AppendHeader("content-disposition", "attachment;filename=Employees.vcf")
Response.TransmitFile(ml_filePath)
Response.End()
Response.Flush()
Catch ex As Exception
Finally
End Try
End Sub