Jak zautomatyzować program Excel ze strony internetowej HTML przy użyciu języka JScript
Podsumowanie
W tym artykule przedstawiono sposób tworzenia skoroszytu programu Microsoft Office Excel i manipulowania nimi na podstawie strony HTML.
Więcej informacji
W tym artykule przedstawiono kod JScript, który automatyzuje program Excel. Język JScript nie ma wewnętrznych środków tworzenia funkcji SAFEARRAYs. W przypadku korzystania z automatyzacji, jeśli wywołasz funkcję, która wymaga parametru SAFEARRAY, możesz użyć języka VBScript do utworzenia pliku SAFEARRAY. Poniższy kod przedstawia tę kombinację kodu JScript i VBScript.
Tworzenie przykładu automatyzacji
Uruchom Notatnik.
Wklej następujący kod do Notatnika.
<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>
Zapisz plik w wybranym katalogu z nazwą pliku Excelaut.htm.
Zamknij Notatnik i uruchom program Internet Explorer.
Na pasku Adres wpisz C:*path*\excelaut.htm, gdzie ścieżka to katalog, w którym zapisano plik.
Po załadowaniu pliku w programie Internet Explorer zostanie wyświetlone jedno zdanie z przyciskiem. Po naciśnięciu przycisku program Excel uruchomi się na komputerze klienta i wypełni dane.
Informacje
Ten artykuł jest równoległy do innych artykułów opisujących ten sam proces przy użyciu różnych języków. Aby uzyskać więcej informacji, kliknij następujące numery artykułów, aby wyświetlić artykuły w bazie wiedzy Microsoft Knowledge Base:
219151 Jak zautomatyzować program Microsoft Excel z poziomu programu Visual Basic
179706 Jak zautomatyzować program Excel przy użyciu MFC oraz utworzyć i sformatować nowy skoroszyt
Aby uzyskać więcej informacji na temat automatyzowania programu Excel ze strony HTML, kliknij następujący numer artykułu, aby wyświetlić artykuł w bazie wiedzy Microsoft Knowledge Base:
198703 Jak zautomatyzować program Excel z poziomu języka VBScript po stronie klienta
Aby uzyskać więcej informacji na temat usługi Office Automation, odwiedź następującą witrynę internetową pomocy technicznej programu Microsoft Office Development: pomoc techniczna firmy Microsoft