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
Inicie o Bloco de Notas.
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>
Guarde o ficheiro num diretório à sua escolha com o nome de ficheiro Excelaut.htm.
Feche o Bloco de Notas e inicie o Internet Explorer.
Na Barra de endereço, escreva C:*caminho*\excelaut.htm, em que caminho é o diretório onde guardou o ficheiro.
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