ActiveXObject使用:
前提IE必须加此站点为信任
写本地文件:
var fso = new ActiveXObject("Scripting.FileSystemObject");
tmpFolder = fso.GetSpecialFolder(2);
var fileName=tmpFolder+"\\"+fileNamestr+".xls";
viewer.SaveReport(fileName);
fileName=fileName.replace(/\\/g, "\\\\");
改写<input type="file" >或<html:file property="file1" size="60" value="浏览..."></html:file>默认路径
document.all["file1"].focus();
var WshShell=new ActiveXObject("WScript.Shell");
window.clipboardData.setData("Text","<%=fileName%>");
WshShell.sendKeys("^v");
ActiveXObject函数的使用
newObj = new ActiveXObject(servername.typename[, location]) 参数 newObj 必选项。要赋值为 ActiveXObject 的变量名。 servername 必选项。提供该对象的应用程序的名称。 typename 必选项。要创建的对象的类型或类。 location 可选项。创建该对象的网络服务器的名称。说明 Automation 服务器至少提供一类对象。例如,字处理应用程序可能提供应用程序对象、文档对象和工具栏对象。要创建 Automation 对象,将新的 ActiveXObject 赋给对象变量: var ExcelSheet; ExcelApp = new ActiveXObject("Excel.Application"); ExcelSheet = new ActiveXObject("Excel.Sheet"); 本代码启动创建对象的应用程序(在这种情况下,Microsoft Excel 工作表)。一旦对象被创建,就可以用定义的对象变量在代码中引用它。在下面的例子中,通过对象变量 ExcelSheet 。
ActiveXObject其实就是以一个字符串为参数的函数。我写了一个对象由于没有加引号调用,结果就是报没有这个对象。搞了好久。现在想想,作为参数就是字符串,数字,内存地址和集合(包括数组,对象等等)几类。作为脚本语言的一个顶层函数可以识别的也就字符串和数字了。对象需要知道是什么对象,它哪里知道。
在ATL中生成函数注意两点a) 使用向导时候在类的接口处添加函数。b)向导中只能添加参数类型,参数名称自己手工加入即可。
JavaScript访问数据库
var conn = new ActiveXObject("ADODB.Connection");
//var XDom = new ActiveXObject("MSXML.DOMDocument");
var rs = new ActiveXObject("ADODB.Recordset");
conn.Open("Provider=OraOLEDB.Oracle;data source=ora;user );
var sSQL = "select co.COMPANY_NAME,ca.ASSET_CARD_NO,ca.ASSET_CARD_NAME,da.DEPARTMENT_NAME,pe.FIRST_NAME || pe.LAST_NAME as"
+ " Name,us.USER_NAME FROM COMPANY co,ZC_ASSET_CARD ca,DEPARTMENT da,PERSON pe,USER_LOGIN us where "
+ "co.COMPANY_PARTY_ID = ca.COMPANY_PARTY_ID and da.DEPARTMENT_PARTY_ID = ca.DEPARTMENT_ID and "
+ "pe.PARTY_ID=ca.EMPLOYEE_ID and us.USER_LOGIN_ID = ca.FH_USER_LOGIN_ID and ca.FH_USER_LOGIN_ID='01'";
rs.open(sSQL,conn);
shtml = "<table width='70%' border=1>";
shtml +="<tr bgcolor='#f4f4f4'><td>使用单位</td><td>资产编号</td><td>资产名称</td><td>使用部门</td><td>使用职员</td>";
shtml += "<td>复核状态</td></tr>";
while (!rs.EOF){
shtml += "<tr><td>" + rs("COMPANY_NAME") + "</td><td>" + rs("ASSET_CARD_NO") + "</td><td>" + rs("ASSET_CARD_NAME") + "</td> <td>" + rs("DEPARTMENT_NAME") + "</td><td>" + rs("Name") + "</td><td>" + rs("USER_NAME") + "</td>" + "</tr>";
rs.moveNext;
}
shtml += "</table>";
document.write(shtml);
rs.close();
rs = null;
conn.close();
conn = null;
var ExcelSheet;ExcelSheet = new ActiveXObject("Excel.在下面的例子中,通过对象变量 ExcelSheet 访问新对象的属性和方法和其他 Excel 对象,//包括 Application 对象和 ActiveSheet.Cells 集合。// 使 Excel 通过 Application 对象可见。// 用 Application 对象用 Quit 方法关闭 Excel。
例子:
<BODY>
<SCRIPT language=javascript>
///*Parameter :打開指定Excel
function OpenExcel(){
var oExcel;
var oWorkbook;
var strAllName;
oExcel = new ActiveXObject("Excel.Application");
strAllName="E:/excel匯入界面/Excel導出到表格.xls";
//alert(strAllName)
oExcel.Workbooks.Open(strAllName);
oExcel.DisplayAlerts = false;
oExcel.Visible = true;
//防EExcel死進程的關鍵!!必須!!!downmoon嚴重聲明
//idTmr = window.setInterval("Cleanup();",1000);
}
function Cleanup(){
window.clearInterval(idTmr);
CollectGarbage();
}
///*Parameter :把表格內容匯入到Excel
function InExcel() {
var oXL = new ActiveXObject("Excel.Application"); //創建應該對象
var oWB = oXL.Workbooks.Add();//新建一個Excel工作簿
var oSheet = oWB.ActiveSheet;//指定要寫入內容的工作表為活動工作表
var table = document.all.data;//指定要寫入數據源的id
var hang = table.rows.length;//取數據源行數
var lie = table.rows(0).cells.length;//取數據源列數
// Add table headers going cell by cell.
for (i=0;i<hang;i++){//在Excel中寫行
for (j=0;j<lie;j++){//在Excel中寫列
//隅砱跡宒
oSheet.Cells(i+1,j+1).NumberFormatLocal = "@";
//!!!!!!!上面這句是將單元格的格式定義為文本
oSheet.Cells(i+1,j+1).Font.Bold = true;//加粗
oSheet.Cells(i+1,j+1).Font.Size = 10;//字體大小
oSheet.Cells(i+1,j+1).value = table.rows(i).cells(j).innerText;//向單元格中寫入值
}
}
oXL.Visible = true;
oXL.UserControl = true;
}
///*Parameter :把Excel內容匯出到表格
function OutExcel() {
LVAR_DocInfo=new Array;
var LSTR_fileName="E:/excel匯入界面/Excel導出到表格.xls";
objCon = new ActiveXObject("ADODB.Connection");
objCon.Provider = "Microsoft.Jet.OLEDB.4.0";
objCon.ConnectionString = "Data Source=" + LSTR_fileName + ";Extended Properties=Excel 8.0;";
objCon.CursorLocation = 1;
objCon.Open;
var strQuery;
var strSheetName = "Sheet1$";
var rsExcel = new ActiveXObject("ADODB.Recordset");
strQuery = "SELECT * FROM [" + strSheetName + "]";
rsExcel.ActiveConnection = objCon;
rsExcel.Open(strQuery);
var shtml ="<table border='1'>"
shtml += "<tr>";
shtml +="<th>編號</th>"
shtml +="<th>姓名</th>"
shtml +="<th>年齡</th>"
shtml +="<th>性別</th>"
shtml +="</tr>";
while(!rsExcel.EOF) {
shtml += "<tr>";
shtml +="<td>" + rsExcel.Fields(0).value + "</td>"
shtml +="<td>" + rsExcel.Fields(1).value + "</td>";
shtml +="<td>" + rsExcel.Fields(2).value + "</td>";
shtml +="<td>" + rsExcel.Fields(3).value + "</td>";
shtml +="</tr>";
rsExcel.MoveNext;
}
shtml +="</table>"
document.getElementById("TblExcel").innerHTML=shtml;
// Close the connection and dispose the file
objCon.Close;
objCon =null;
rsExcel = null;
}
</SCRIPT>
<TABLE cellSpacing=1 width=300 bgColor=black border=0>
<TBODY>
<TR bgColor=white> <TD>編號</TD><TD>姓名</TD><TD>年齡</TD><TD>性別</TD></TR>
<TR bgColor=white><TD>0001</TD><TD>張三</TD><TD>22</TD><TD>女</TD></TR>
<TR bgColor=white><TD>0002</TD><TD>李四</TD><TD>23</TD><TD>男</TD></TR>
</TBODY>
</TABLE>
<INPUT type=button value=導出到excel
<input type="button" value="打開Excel">
<Input type=button value=把excel導入到表格
<div >
</div></DIV></BODY></HTML>