Automatización de Excel desde una página web HTML mediante JScript
Resumen
En este artículo se muestra cómo crear y manipular un libro de Microsoft Office Excel desde una página HTML.
Más información
En este artículo se muestra el código JScript que automatiza Excel. JScript no tiene ningún medio interno para crear SAFEARRAYs. Cuando se usa la automatización, si se llama a una función que requiere safearray, puede usar VBScript para crear SAFEARRAY. En el código siguiente se muestra esta combinación de código JScript y VBScript.
Creación del ejemplo de automatización
Inicie el Bloc de notas.
Pegue el código siguiente en el Bloc 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 el archivo en un directorio de su elección con el nombre de archivo Excelaut.htm.
Cierre el Bloc de notas e inicie Internet Explorer.
En la barra de direcciones, escriba C:*path*\excelaut.htm, donde path es el directorio en el que guardó el archivo.
Cuando Internet Explorer cargue el archivo, verá una oración con un botón. Al presionar el botón, Excel se iniciará en el equipo del cliente y se rellenará con datos.
Referencias
Este artículo es paralelo a otros artículos que describen el mismo proceso mediante diferentes lenguajes. Para obtener más información, haga clic en los números de artículo siguientes para ver los artículos de Microsoft Knowledge Base:
219151 Automatización de Microsoft Excel desde Visual Basic
179706 Uso de MFC para automatizar Excel y crear y dar formato a un nuevo libro
Para obtener más información sobre cómo automatizar Excel desde una página HTML, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
198703 Automatización de Excel desde un VBScript del lado cliente
Para obtener más información sobre Office Automation, visite el siguiente sitio web de soporte técnico de Desarrollo de Microsoft Office: Soporte técnico de Microsoft