469,616 Members | 1,774 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,616 developers. It's quick & easy.

Excel vs. Office Web Components

Allison (or others), thank you for the advice...a few more questions:

- I have tested on my workstation on Excel XP and my application references
the Excel 10.0 Object Library. I was told the server has the "Office 2003"
components which I'm assuming is OWC11. How do my imports, declarations or
other code change to account for the components versus having Excel
installed?
Imports Microsoft.VisualBasic
Imports System.Data
Imports System.Runtime.InteropServices.Marshal
Private Function DumpData(ByVal _
dt As DataTable, ByVal oCells As Excel.Range) As String
Dim dr As DataRow, ary() As Object
Dim iRow As Integer, iCol As Integer

'Output Column Headers
For iCol = 0 To dt.Columns.Count - 1
oCells(2, iCol + 1) = dt.Columns(iCol).ToString
Next

'Output Data
For iRow = 0 To dt.Rows.Count - 1
dr = dt.Rows.Item(iRow)
ary = dr.ItemArray
For iCol = 0 To UBound(ary)
oCells(iRow + 3, iCol + 1) = ary(iCol).ToString
Response.Write(ary(iCol).ToString & vbTab)
Next
Next
End Function

Public Sub btnCommunitiesExcel_OnClick(ByVal sender As System.Object,
ByVal e As System.EventArgs)
Dim oExcel As New Excel.Application
Dim oBooks As Excel.Workbooks, oBook As Excel.Workbook
Dim oSheets As Excel.Sheets, oSheet As Excel.Worksheet
Dim oCells As Excel.Range
Dim sFile As String, sTemplate As String
Dim ds As New DataSet
Dim da As New SqlDataAdapter(Session("savedCommunitiesSql"),
connection1.conString)
da.Fill(ds, "CommunitiesExcel")
Dim dt As DataTable = ds.Tables("CommunitiesExcel")

sFile = Server.MapPath(Request.ApplicationPath) & _
"\advanced\ExcelExports\Communities.xls"

sTemplate = Server.MapPath(Request.ApplicationPath) & _
"\advanced\ExcelExports\CommunitiesTemplate.xl s"

oExcel.Visible = False : oExcel.DisplayAlerts = False

'Start a new workbook
oBooks = oExcel.Workbooks
oBooks.Open(Server.MapPath(Request.ApplicationPath ) & _
"\advanced\ExcelExports\CommunitiesTemplate.xl s") 'Load colorful
template with chart
oBook = oBooks.Item(1)
oSheets = oBook.Worksheets
oSheet = CType(oSheets.Item(1), Excel.Worksheet)
oSheet.Name = "First Sheet"
oCells = oSheet.Cells

DumpData(dt, oCells) 'Fill in the data

oSheet.SaveAs(sFile) 'Save in a temporary file
oBook.Close()

'Quit Excel and thoroughly deallocate everything
oExcel.Quit()
ReleaseComObject(oCells) : ReleaseComObject(oSheet)
ReleaseComObject(oSheets) : ReleaseComObject(oBook)
ReleaseComObject(oBooks) : ReleaseComObject(oExcel)
oExcel = Nothing : oBooks = Nothing : oBook = Nothing
oSheets = Nothing : oSheet = Nothing : oCells = Nothing
System.GC.Collect()
Response.Redirect(sFile) 'Send the user to the file

'impersonationContext.Undo()

End Sub

Nov 19 '05 #1
3 2349
The code you supplied below should work with both Office XP and Office 2003.
I should know since I wrote it and I've tested it with both versions of
Office.
;-)

--
I hope this helps,
Steve C. Orr, MCSD, MVP
http://SteveOrr.net
"DC Gringo" <dc******@visiontechnology.net> wrote in message
news:O5*************@TK2MSFTNGP12.phx.gbl...
Allison (or others), thank you for the advice...a few more questions:

- I have tested on my workstation on Excel XP and my application
references
the Excel 10.0 Object Library. I was told the server has the "Office
2003"
components which I'm assuming is OWC11. How do my imports, declarations
or
other code change to account for the components versus having Excel
installed?
Imports Microsoft.VisualBasic
Imports System.Data
Imports System.Runtime.InteropServices.Marshal
Private Function DumpData(ByVal _
dt As DataTable, ByVal oCells As Excel.Range) As String
Dim dr As DataRow, ary() As Object
Dim iRow As Integer, iCol As Integer

'Output Column Headers
For iCol = 0 To dt.Columns.Count - 1
oCells(2, iCol + 1) = dt.Columns(iCol).ToString
Next

'Output Data
For iRow = 0 To dt.Rows.Count - 1
dr = dt.Rows.Item(iRow)
ary = dr.ItemArray
For iCol = 0 To UBound(ary)
oCells(iRow + 3, iCol + 1) = ary(iCol).ToString
Response.Write(ary(iCol).ToString & vbTab)
Next
Next
End Function

Public Sub btnCommunitiesExcel_OnClick(ByVal sender As System.Object,
ByVal e As System.EventArgs)
Dim oExcel As New Excel.Application
Dim oBooks As Excel.Workbooks, oBook As Excel.Workbook
Dim oSheets As Excel.Sheets, oSheet As Excel.Worksheet
Dim oCells As Excel.Range
Dim sFile As String, sTemplate As String
Dim ds As New DataSet
Dim da As New SqlDataAdapter(Session("savedCommunitiesSql"),
connection1.conString)
da.Fill(ds, "CommunitiesExcel")
Dim dt As DataTable = ds.Tables("CommunitiesExcel")

sFile = Server.MapPath(Request.ApplicationPath) & _
"\advanced\ExcelExports\Communities.xls"

sTemplate = Server.MapPath(Request.ApplicationPath) & _
"\advanced\ExcelExports\CommunitiesTemplate.xl s"

oExcel.Visible = False : oExcel.DisplayAlerts = False

'Start a new workbook
oBooks = oExcel.Workbooks
oBooks.Open(Server.MapPath(Request.ApplicationPath ) & _
"\advanced\ExcelExports\CommunitiesTemplate.xl s") 'Load colorful
template with chart
oBook = oBooks.Item(1)
oSheets = oBook.Worksheets
oSheet = CType(oSheets.Item(1), Excel.Worksheet)
oSheet.Name = "First Sheet"
oCells = oSheet.Cells

DumpData(dt, oCells) 'Fill in the data

oSheet.SaveAs(sFile) 'Save in a temporary file
oBook.Close()

'Quit Excel and thoroughly deallocate everything
oExcel.Quit()
ReleaseComObject(oCells) : ReleaseComObject(oSheet)
ReleaseComObject(oSheets) : ReleaseComObject(oBook)
ReleaseComObject(oBooks) : ReleaseComObject(oExcel)
oExcel = Nothing : oBooks = Nothing : oBook = Nothing
oSheets = Nothing : oSheet = Nothing : oCells = Nothing
System.GC.Collect()
Response.Redirect(sFile) 'Send the user to the file

'impersonationContext.Undo()

End Sub

Nov 19 '05 #2
Steve,

Yes, it works perfectly with Office XP. But I need it to work with Office
Web Components that are installed on the server. What do I need to do to
this to make it work?

_____
DC G
"Steve C. Orr [MVP, MCSD]" <St***@Orr.net> wrote in message
news:eq*************@TK2MSFTNGP12.phx.gbl...
The code you supplied below should work with both Office XP and Office 2003. I should know since I wrote it and I've tested it with both versions of
Office.
;-)

--
I hope this helps,
Steve C. Orr, MCSD, MVP
http://SteveOrr.net
"DC Gringo" <dc******@visiontechnology.net> wrote in message
news:O5*************@TK2MSFTNGP12.phx.gbl...
Allison (or others), thank you for the advice...a few more questions:

- I have tested on my workstation on Excel XP and my application
references
the Excel 10.0 Object Library. I was told the server has the "Office
2003"
components which I'm assuming is OWC11. How do my imports, declarations
or
other code change to account for the components versus having Excel
installed?
Imports Microsoft.VisualBasic
Imports System.Data
Imports System.Runtime.InteropServices.Marshal
Private Function DumpData(ByVal _
dt As DataTable, ByVal oCells As Excel.Range) As String
Dim dr As DataRow, ary() As Object
Dim iRow As Integer, iCol As Integer

'Output Column Headers
For iCol = 0 To dt.Columns.Count - 1
oCells(2, iCol + 1) = dt.Columns(iCol).ToString
Next

'Output Data
For iRow = 0 To dt.Rows.Count - 1
dr = dt.Rows.Item(iRow)
ary = dr.ItemArray
For iCol = 0 To UBound(ary)
oCells(iRow + 3, iCol + 1) = ary(iCol).ToString
Response.Write(ary(iCol).ToString & vbTab)
Next
Next
End Function

Public Sub btnCommunitiesExcel_OnClick(ByVal sender As System.Object,
ByVal e As System.EventArgs)
Dim oExcel As New Excel.Application
Dim oBooks As Excel.Workbooks, oBook As Excel.Workbook
Dim oSheets As Excel.Sheets, oSheet As Excel.Worksheet
Dim oCells As Excel.Range
Dim sFile As String, sTemplate As String
Dim ds As New DataSet
Dim da As New SqlDataAdapter(Session("savedCommunitiesSql"),
connection1.conString)
da.Fill(ds, "CommunitiesExcel")
Dim dt As DataTable = ds.Tables("CommunitiesExcel")

sFile = Server.MapPath(Request.ApplicationPath) & _
"\advanced\ExcelExports\Communities.xls"

sTemplate = Server.MapPath(Request.ApplicationPath) & _
"\advanced\ExcelExports\CommunitiesTemplate.xl s"

oExcel.Visible = False : oExcel.DisplayAlerts = False

'Start a new workbook
oBooks = oExcel.Workbooks
oBooks.Open(Server.MapPath(Request.ApplicationPath ) & _
"\advanced\ExcelExports\CommunitiesTemplate.xl s") 'Load colorful
template with chart
oBook = oBooks.Item(1)
oSheets = oBook.Worksheets
oSheet = CType(oSheets.Item(1), Excel.Worksheet)
oSheet.Name = "First Sheet"
oCells = oSheet.Cells

DumpData(dt, oCells) 'Fill in the data

oSheet.SaveAs(sFile) 'Save in a temporary file
oBook.Close()

'Quit Excel and thoroughly deallocate everything
oExcel.Quit()
ReleaseComObject(oCells) : ReleaseComObject(oSheet)
ReleaseComObject(oSheets) : ReleaseComObject(oBook)
ReleaseComObject(oBooks) : ReleaseComObject(oExcel)
oExcel = Nothing : oBooks = Nothing : oBook = Nothing
oSheets = Nothing : oSheet = Nothing : oCells = Nothing
System.GC.Collect()
Response.Redirect(sFile) 'Send the user to the file

'impersonationContext.Undo()

End Sub


Nov 19 '05 #3
You mean without Excel being installed on the server?
I'd be surprised if the code would work at all.
There are many ways you can export to Excel without Excel having to be
installed on the server, but I don't think this is one of them.
For some other ideas look here:
http://SteveOrr.net/Articles/ExcelExport.aspx
http://SteveOrr.net/Articles/ExportPanel.aspx
http://SteveOrr.net/export.aspx

--
I hope this helps,
Steve C. Orr, MCSD, MVP
http://SteveOrr.net

"DC Gringo" <dc******@visiontechnology.net> wrote in message
news:%2****************@tk2msftngp13.phx.gbl...
Steve,

Yes, it works perfectly with Office XP. But I need it to work with Office
Web Components that are installed on the server. What do I need to do to
this to make it work?

_____
DC G
"Steve C. Orr [MVP, MCSD]" <St***@Orr.net> wrote in message
news:eq*************@TK2MSFTNGP12.phx.gbl...
The code you supplied below should work with both Office XP and Office

2003.
I should know since I wrote it and I've tested it with both versions of
Office.
;-)

--
I hope this helps,
Steve C. Orr, MCSD, MVP
http://SteveOrr.net
"DC Gringo" <dc******@visiontechnology.net> wrote in message
news:O5*************@TK2MSFTNGP12.phx.gbl...
> Allison (or others), thank you for the advice...a few more questions:
>
> - I have tested on my workstation on Excel XP and my application
> references
> the Excel 10.0 Object Library. I was told the server has the "Office
> 2003"
> components which I'm assuming is OWC11. How do my imports,
> declarations
> or
> other code change to account for the components versus having Excel
> installed?
>
>
> Imports Microsoft.VisualBasic
> Imports System.Data
> Imports System.Runtime.InteropServices.Marshal
>
>
> Private Function DumpData(ByVal _
> dt As DataTable, ByVal oCells As Excel.Range) As String
> Dim dr As DataRow, ary() As Object
> Dim iRow As Integer, iCol As Integer
>
> 'Output Column Headers
> For iCol = 0 To dt.Columns.Count - 1
> oCells(2, iCol + 1) = dt.Columns(iCol).ToString
> Next
>
> 'Output Data
> For iRow = 0 To dt.Rows.Count - 1
> dr = dt.Rows.Item(iRow)
> ary = dr.ItemArray
> For iCol = 0 To UBound(ary)
> oCells(iRow + 3, iCol + 1) = ary(iCol).ToString
> Response.Write(ary(iCol).ToString & vbTab)
> Next
> Next
> End Function
>
> Public Sub btnCommunitiesExcel_OnClick(ByVal sender As
> System.Object,
> ByVal e As System.EventArgs)
> Dim oExcel As New Excel.Application
> Dim oBooks As Excel.Workbooks, oBook As Excel.Workbook
> Dim oSheets As Excel.Sheets, oSheet As Excel.Worksheet
> Dim oCells As Excel.Range
> Dim sFile As String, sTemplate As String
> Dim ds As New DataSet
> Dim da As New SqlDataAdapter(Session("savedCommunitiesSql"),
> connection1.conString)
> da.Fill(ds, "CommunitiesExcel")
> Dim dt As DataTable = ds.Tables("CommunitiesExcel")
>
> sFile = Server.MapPath(Request.ApplicationPath) & _
> "\advanced\ExcelExports\Communities.xls"
>
> sTemplate = Server.MapPath(Request.ApplicationPath) & _
> "\advanced\ExcelExports\CommunitiesTemplate.xl s"
>
> oExcel.Visible = False : oExcel.DisplayAlerts = False
>
> 'Start a new workbook
> oBooks = oExcel.Workbooks
> oBooks.Open(Server.MapPath(Request.ApplicationPath ) & _
> "\advanced\ExcelExports\CommunitiesTemplate.xl s") 'Load colorful
> template with chart
> oBook = oBooks.Item(1)
> oSheets = oBook.Worksheets
> oSheet = CType(oSheets.Item(1), Excel.Worksheet)
> oSheet.Name = "First Sheet"
> oCells = oSheet.Cells
>
> DumpData(dt, oCells) 'Fill in the data
>
> oSheet.SaveAs(sFile) 'Save in a temporary file
> oBook.Close()
>
> 'Quit Excel and thoroughly deallocate everything
> oExcel.Quit()
> ReleaseComObject(oCells) : ReleaseComObject(oSheet)
> ReleaseComObject(oSheets) : ReleaseComObject(oBook)
> ReleaseComObject(oBooks) : ReleaseComObject(oExcel)
> oExcel = Nothing : oBooks = Nothing : oBook = Nothing
> oSheets = Nothing : oSheet = Nothing : oCells = Nothing
> System.GC.Collect()
> Response.Redirect(sFile) 'Send the user to the file
>
> 'impersonationContext.Undo()
>
> End Sub
>
>
>



Nov 19 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

9 posts views Thread by [Yosi] | last post: by
3 posts views Thread by Rana | last post: by
14 posts views Thread by pmud | last post: by
8 posts views Thread by DC Gringo | last post: by
22 posts views Thread by Howard Kaikow | last post: by
3 posts views Thread by DC Gringo | last post: by
15 posts views Thread by =?Utf-8?B?c2hhc2hhbmsga3Vsa2Fybmk=?= | last post: by
reply views Thread by devrayhaan | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.