JS生成EXCEL

通過JS調用ActiveX來控制Excel自動生成單元格文本,顏色,邊框,公式以及統計圖表,動態設置數據源等等

基本能實現對Excel或其他Office軟件的任意操作,這裏只是寫一個參考

使用IE瀏覽器運行 ,是不是感覺電腦跟中病毒了一樣,嘿嘿!

 

<!doctype html>
 <head>
  <meta charset="UTF-8">
  <title>Excel Document</title>
 </head>
 <body>
  <script>
		var app = new ActiveXObject("Excel.Application");   //開啓一個Excel服務
		app.Visible = true;        //顯示Excel頁面
		var workbooks = app.Workbooks;  //獲取Excel文檔容器對象
		var workbook = workbooks.Add();  //向容器中添加一個文檔對象
	    var	worksheet = app.Worksheets(1);  //選擇該文檔的第一個Sheet頁對象
		worksheet.Activate(); //將該對象激活爲當前sheet頁,即可編輯狀態
		
		var range1 = worksheet.Range("B1", "L1");  //通過range方法獲取指定單元格區域的對象
		
		range1.Select(); //將該區域選中
		var txtArray = new Array(12);

		txtArray[0] = "數據元素類型";
		txtArray[1] = "表名";
		txtArray[2] = "是表?";
		txtArray[3] = "字段名";
		txtArray[4] = "主鍵?";
		txtArray[5] = "數據元素";
		txtArray[6] = "檢查表";
		txtArray[7] = "數據類型";
		txtArray[8] = "長度";
		txtArray[9] = "精度";
		txtArray[10] = "域名";
		txtArray[11] = "搜索幫助類型";
		range1.Activate();
		range1.Value2 = new Array(txtArray);//不知道dynamic類型的數據怎麼通過JS傳到dll中去
		
		
		//var range2 = worksheet.Range("C3", "M4");
		//range2.Select();
		worksheet.Cells(1,1).Activate();
		app.ActiveCell.FormulaR1C1="原始數據"; //ActiveCell爲當前激活的單元格,向單元格寫入字符串
		worksheet.Cells(2,1).Activate();
		app.ActiveCell.FormulaR1C1="最大值";
		worksheet.Cells(3,1).Activate();
		app.ActiveCell.FormulaR1C1="最小值";
		worksheet.Cells(4,1).Activate();
		app.ActiveCell.FormulaR1C1="平均值";

		for(var j=2;j<=12;j++){     
             worksheet.Cells(1,j).Activate();
			 app.ActiveCell.FormulaR1C1= (Math.random()*Math.PI).toFixed(3);
			 worksheet.Cells(2,j).Activate();
			 app.ActiveCell.FormulaR1C1="=MAX(R[-1]C["+(2-j)+"]:R[-1]C)";//向單元格寫入公式

			 worksheet.Cells(3,j).Activate();
			 app.ActiveCell.FormulaR1C1="=MIN(R[-2]C["+(2-j)+"]:R[-2]C)";
			
			worksheet.Cells(4,j).Activate();
			app.ActiveCell.FormulaR1C1="=AVERAGEA(R[-3]C["+(2-j)+"]:R[-3]C)";
		}
		
		//設置單元格顏色
		var range3 = worksheet.Range("A1:A4");
		range3.Select();
		//range3.Interior.ColorIndex = 3;
		range3.Interior.Pattern = 1; //"xlSolid";
		range3.Interior.PatternColorIndex = -4105;// "xlAutomatic";該常量的關係通過dll獲取
		range3.Interior.ThemeColor = 10;//"xlThemeColorAccent6";
		range3.Interior.TintAndShade = 0.599993896298105;
		range3.Interior.PatternTintAndShade = 0;

		//設置線邊框
		var range4 = worksheet.Range("A1:L4")
		range4.Select();
		range4.Borders(5).LineStyle = -4142  //xlDiagonalDown = 5,xlNone = -4142
		range4.Borders(6).LineStyle = -4142 //xlDiagonalUp = 6,
		 //xlEdgeLeft = 7,
        range4.Borders(7).LineStyle = 1 //xlContinuous = 1,
        range4.Borders(7).ThemeColor = 10
        range4.Borders(7).TintAndShade = -0.249977111117893
        range4.Borders(7).Weight = 2 //xlThin = 2,
		//xlEdgeTop = 8,
		range4.Borders(8).LineStyle = 1
        range4.Borders(8).ThemeColor = 10
        range4.Borders(8).TintAndShade = -0.249977111117893
        range4.Borders(8).Weight = 2
		//xlEdgeBottom = 9,
        range4.Borders(9).LineStyle = 1
        range4.Borders(9).ThemeColor = 10
        range4.Borders(9).TintAndShade = -0.249977111117893
        range4.Borders(9).Weight = 2
		//xlEdgeRight = 10,
        range4.Borders(10).LineStyle = 1
        range4.Borders(10).ThemeColor = 10
        range4.Borders(10).TintAndShade = -0.249977111117893
        range4.Borders(10).Weight = 2
		//xlInsideVertical = 11,
		
        range4.Borders(11).LineStyle = 1
        range4.Borders(11).ThemeColor = 10
        range4.Borders(11).TintAndShade = -0.249977111117893
        range4.Borders(11).Weight = 2
		//xlInsideHorizontal = 12,
		
        range4.Borders(12).LineStyle = 1
        range4.Borders(12).ThemeColor = 10
        range4.Borders(12).TintAndShade = -0.249977111117893
        range4.Borders(12).Weight = 2

		
		//添加統計圖表,選擇數據源
		var range5 = worksheet.Range("A1:L4");
		range5.Select();
		
	    var shape =	worksheet.Shapes.AddChart2(201, 54);
		shape.Select();   //XlChartType.xl3DColumnClustered=54

		app.ActiveChart.SetSourceData(range5)
		
		//設置圖表的位置和大小
		shape.Left=10;
		shape.Top = 60;
        shape.Height = 250;
        shape.Width = 500;

		//sheet的重命名
		worksheet.Name = "Excel Test";


		try {  
			var fname = app.Application.GetSaveAsFilename("Excel.xlsx", "Excel Test File (*.xlsx), *.xlsx");  
		} catch (e) {  
			print("Nested catch caught " + e);  
		} finally {  
			workbook.SaveAs(fname);  
			workbook.Close(savechanges = false);  
			app.Quit();  
			app = null;  
		}
  </script>
 </body>
</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章