Como automatizar o Excel a partir de uma página Web HTML utilizando JScript

Resumo

Este artigo demonstra como criar e manipular um livro do Microsoft Office Excel a partir de uma página HTML.

Mais Informações

Este artigo ilustra o código JScript que automatiza o Excel. O JScript não tem meios internos para criar SAFEARRAYs. Ao utilizar automatização, se chamar uma função que requer um SISTEMA SEGURO, pode utilizar VBScript para criar o SAFEARRAY. O código abaixo demonstra esta combinação de código JScript e VBScript.

Criar o exemplo de automatização

  1. Inicie o Bloco de Notas.

  2. Colar o seguinte código no Bloco de Notas.

    <HTML>
    <BODY>
    Press the button to start Excel and display quarterly data.
    <SCRIPT LANGUAGE="VBScript">
    Function CreateNamesArray()
    ' Create an array to set multiple values at once.
      Dim saNames(5, 2)
      saNames(0, 0) = "John"
    
    saNames(0, 1) = "Smith"
      saNames(1, 0) = "Tom"
      saNames(1, 1) = "Brown"
      saNames(2, 0) = "Sue"
      saNames(2, 1) = "Thomas"
      saNames(3, 0) = "Jane"
      saNames(3, 1) = "Jones"
      saNames(4, 0) = "Adam"
      saNames(4, 1) = "Johnson"
      CreateNamesArray = saNames
    End Function
    </SCRIPT>
    
    <SCRIPT LANGUAGE="JScript"> 
    function AutomateExcel()
    {
    
    // Start Excel and get Application object.
          var oXL = new ActiveXObject("Excel.Application");
    
    oXL.Visible = true;
    
    // Get a new workbook.
          var oWB = oXL.Workbooks.Add();
          var oSheet = oWB.ActiveSheet;
    
    // Add table headers going cell by cell.
          oSheet.Cells(1, 1).Value = "First Name";
          oSheet.Cells(1, 2).Value = "Last Name";
          oSheet.Cells(1, 3).Value = "Full Name";
          oSheet.Cells(1, 4).Value = "Salary";
    
    // Format A1:D1 as bold, vertical alignment = center.
          oSheet.Range("A1", "D1").Font.Bold = true;
          oSheet.Range("A1", "D1").VerticalAlignment =  -4108; //xlVAlignCenter
    
    // Create an array to set multiple values at once.
    
    // Fill A2:B6 with an array of values (from VBScript).
          oSheet.Range("A2", "B6").Value = CreateNamesArray();
    
    // Fill C2:C6 with a relative formula (=A2 & " " & B2).
          var oRng = oSheet.Range("C2", "C6");
          oRng.Formula = "=A2 & \" \" & B2";
    
    // Fill D2:D6 with a formula(=RAND()*100000) and apply format.
          oRng = oSheet.Range("D2", "D6");
          oRng.Formula = "=RAND()*100000";
          oRng.NumberFormat = "$0.00";
    
    // AutoFit columns A:D.
          oRng = oSheet.Range("A1", "D1");
          oRng.EntireColumn.AutoFit();
    
    // Manipulate a variable number of columns for Quarterly Sales Data.
          DispalyQuarterlySales(oSheet);
    
    // Make sure Excel is visible and give the user control
       // of Excel's lifetime.
          oXL.Visible = true;
          oXL.UserControl = true;
    }
    
    function DispalyQuarterlySales(oWS)
    {
          var iNumQtrs, sMsg, iRet;
    
    // Number of quarters to display data for.
          iNumQtrs = 4;
    
    // Starting at E1, fill headers for the number of columns selected.
          var oResizeRange = oWS.Range("E1", "E1").Resize(1,iNumQtrs);
          oResizeRange.Formula = "=\"Q\" & COLUMN()-4 & CHAR(10) & \"Sales\"";
    
    // Change the Orientation and WrapText properties for the headers.
          oResizeRange.Orientation = 38;
          oResizeRange.WrapText = true;
    
    // Fill the interior color of the headers.
          oResizeRange.Interior.ColorIndex = 36;
    
    // Fill the columns with a formula and apply a number format.
          oResizeRange = oWS.Range("E2", "E6").Resize(5,iNumQtrs);
          oResizeRange.Formula = "=RAND()*100";
          oResizeRange.NumberFormat = "$0.00";
    
    // Apply borders to the Sales data and headers.
          oResizeRange = oWS.Range("E1", "E6").Resize(6,iNumQtrs);
          oResizeRange.Borders.Weight = 2;  // xlThin
    
    // Add a Totals formula for the sales data and apply a border.
          oResizeRange = oWS.Range("E8", "E8").Resize(1,iNumQtrs);
          oResizeRange.Formula = "=SUM(E2:E6)";
        // 9 = xlEdgeBottom      
          oResizeRange.Borders(9).LineStyle = -4119; //xlDouble
          oResizeRange.Borders(9).Weight = 4; //xlThick
    
    // Add a Chart for the selected data.
    
    oResizeRange = oWS.Range("E2:E6").Resize(5,iNumQtrs);
          var oChart = oWS.Parent.Charts.Add();
          oChart.ChartWizard(oResizeRange, -4100, null, 2);  // -4100 = xl3dColumn
          oChart.SeriesCollection(1).XValues = oWS.Range("A2", "A6");
          for (iRet = 1; iRet <= iNumQtrs; iRet++) {
             oChart.SeriesCollection(iRet).Name = "=\"Q" + iRet + "\"";
          }
          oChart.Location(2, oWS.Name); // 2 = xlLocationAsObject
    
    // Move the chart so as not to cover your data.
          oWS.Shapes("Chart 1").Top = oWS.Rows(10).Top;
          oWS.Shapes("Chart 1").Left = oWS.Columns(2).Left;
    }
    </SCRIPT>
    <P><INPUT id=button1 type=button value="Start Excel" 
              onclick="AutomateExcel"></P>
    </BODY>
    </HTML>
    
  3. Guarde o ficheiro num diretório à sua escolha com o nome de ficheiro Excelaut.htm.

  4. Feche o Bloco de Notas e inicie o Internet Explorer.

  5. Na Barra de endereço, escreva C:*caminho*\excelaut.htm, em que caminho é o diretório onde guardou o ficheiro.

  6. Quando o Internet Explorer carregar o ficheiro, verá uma frase com um botão. Ao premir o botão, o Excel começa no computador do cliente e preenche com os dados.

Referências

Este artigo paralelamente outros artigos que descrevem o mesmo processo utilizando idiomas diferentes. Para obter mais informações, clique nos seguintes números de artigo para ver os artigos na Base de Dados de Conhecimento Microsoft:

219151 Como automatizar o Microsoft Excel a partir do Visual Basic

179706 Como utilizar o MFC para automatizar o Excel e criar e formatar um novo livro

Para obter mais informações sobre como automatizar o Excel a partir de uma página HTML, clique no número do artigo seguinte para ver o artigo na Base de Dados de Conhecimento Microsoft:

198703 como automatizar o Excel a partir de um VBScript do lado do cliente

Para obter mais informações sobre a Automatização do Office, visite o seguinte Site de suporte para o Desenvolvimento do Microsoft Office: Suporte da Microsoft