Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

robinhopc

gerar excel owc

Recommended Posts

Olá Pessoal, montei um script para gerar excel, e utilizei de modo o ContentType, com tabela, mas não dá para personalizar muito a planilha, e me disseram que gerar em OWC, é melhor. porém não encontrei nenhum tuto para gerar em OWC. alguem pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo, Este é um exemplo fácil que mostra como usar o msowc.dll para gerar gráficos. Este trecho de código foi desenvolvido para ser utilizado como um include.

 



<% 


dim BarVal(8)
dim LineVal(8)
dim Val(8)

BarVal(1) = 4
BarVal(2) = 5
BarVal(3) = 6
BarVal(4) = 4
BarVal(5) = 5
BarVal(6) = 6
BarVal(7) = 8
BarVal(8) = 11

LineVal(1) = 5
LineVal(2) = 4
LineVal(3) = 6
LineVal(4) = 8
LineVal(5) = 9
LineVal(6) = 10
LineVal(7) = 8
LineVal(8) = 9

Val(1) = 1
Val(2) = 2
Val(3) = 3
Val(4) = 4
Val(5) = 4
Val(6) = 6
Val(7) = 7
Val(8) = 8



dim ObjChart
dim ChaCon
dim ObjCharts
dim SerCol

set ObjChart = Server.CreateObject("OWC.Chart")
set ChaCon = ObjChart.Constants
set ObjCharts = ObjChart.Charts.Add

'Adicionar bar
set SerCol = ObjCharts.SeriesCollection.Add
'adicionando a linha
set SerCol1 = ObjCharts.SeriesCollection.Add

ObjCharts.Type = ChaCon.chChartTypeColumnClustered

        SerCol.Caption = "Estimativa do rendimento"
        SerCol.SetData ChaCon.chDimCategories, ChaCon.chDataLiteral, Val
        SerCol.SetData ChaCon.chDimValues, ChaCon.chDataLiteral, BarVal
        '-------------------------------

        'esta é a minha linha no gráfico
        SerCol1.Caption = "Lucro Real"
        SerCol1.SetData ChaCon.chDimCategories, ChaCon.chDataLiteral, Val
        SerCol1.SetData ChaCon.chDimValues, ChaCon.chDataLiteral, LineVal
        'change    from the default bar graph to a line
        SerCol1.Type = ChaCon.chChartTypeLine
        '----------------------------

'Colocar um título ...opcional
ObjChart.HasChartSpaceTitle=True
ObjChart.ChartSpaceTitle.Caption = "Earnings Breakdown"

'Diga que você quer uma legenda no gráfico
ObjChart.HasChartSpaceLegend = True
ObjChart.ChartSpaceLegend.Position = ChaCon.chLegendPositionRight

ImagePath=server.mappath("reports/aspin.gif") 
 
ObjChart.ExportPicture ImagePath,"gif", 400, 200 
set ChaCon = nothing
set ObjCharts = nothing
set ObjChart = nothing %>
<img src="/reports/aspin.gif" width="400" height="200">


eu uso também este exemplo:

 

<!--#include virtual="/scripts/ExcelGen.class.asp"-->
<%
 Dim objRS
 Set objRS = Server.CreateObject("ADODB.Recordset")
 objRS.Open "SELECT * FROM titles", "DSN=FooBar"

 Dim objExcel
 Set objExcel = New ExcelGen

 objExcel.RowOffset = 4
 objExcel.ColumnOffset = 1

 objExcel.GenerateWorksheet(objRS)
 If objExcel.SaveWorksheet(Server.MapPath("foo.xls")) then
   Response.Write "Planilha salva com sucesso.  " & _
                  "<a href=""foo.xls"">Download</a>"
 Else
   Response.Write "Erro ao salvar a planilha!"
 End If

 Set objExcel = Nothing

 objRS.Close
 Set objRS = Nothing
%>



e aqui a classe:


<%
 Option Explicit

 Class ExcelGen

   Private objSpreadsheet
   Private iColOffset
   Private iRowOffset

   Sub Class_Initialize()
     Set objSpreadsheet = Server.CreateObject("OWC.Spreadsheet")

     iRowOffset = 2
     iColOffset = 2
   End Sub

   Sub Class_Terminate()
     Set objSpreadsheet = Nothing   'Clean up
   End Sub

   Public Property Let ColumnOffset(iColOff)
     If iColOff > 0 then
       iColOffset = iColOff
     Else
       iColOffset = 2
     End If
   End Property

   Public Property Let RowOffset(iRowOff)
     If iRowOff > 0 then
       iRowOffset = iRowOff
     Else
       iRowOffset = 2
     End If
   End Property


   Sub GenerateWorksheet(objRS)

     'Populates the Excel worksheet based on a Recordset's contents
     'Start by displaying the titles
     If objRS.EOF then Exit Sub

     Dim objField, iCol, iRow
     iCol = iColOffset
     iRow = iRowOffset

     For Each objField in objRS.Fields
       objSpreadsheet.Cells(iRow, iCol).Value = objField.Name
       iCol = iCol + 1
     Next 'objField

     'Display all of the data
     Do While Not objRS.EOF
       iRow = iRow + 1
       iCol = iColOffset

       For Each objField in objRS.Fields
         If IsNull(objField.Value) then
           objSpreadsheet.Cells(iRow, iCol).Value = ""
         Else
           objSpreadsheet.Cells(iRow, iCol).Value = objField.Value
         End If

         iCol = iCol + 1
       Next 'objField

       objRS.MoveNext     
     Loop

   End Sub    


   Function SaveWorksheet(strFileName)
     'Save the worksheet to a specified filename
     On Error Resume Next
     Call objSpreadsheet.ActiveSheet.Export(strFileName, 0)

     SaveWorksheet = (Err.Number = 0)
   End Function

 End Class
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.