在Windows平臺上, js可以調用很多Windows提供的ActivexObject,本文就使用js來實現文檔處理, 和使用js編寫ActiveX做一個簡單介紹.
</head>
<script type="text/javascript">
function readFolder(){
var filePath = "d://test//";
var fso = new ActiveXObject("Scripting.FileSystemObject"); //加載控件
var f = fso.GetFolder(filePath);
var underFiles = new Enumerator(f.files); //文件夾下文件
for (;!underFiles.atEnd();underFiles.moveNext()){
var fn = "" + underFiles.item();
//alert(fn);
var content = readFile(fn,fso);
alert(content);
}
}
function readFile(path,fso){
var f1 = fso.GetFile(path);
var fh = fso.OpenTextFile(f1, 1/*reading*/);
var content = '';
while ( !fh.AtEndOfStream ) {
content += fh.ReadLine();
}
fh.close()
return content;
}
function writeExcel(){
var ExcelApp = new ActiveXObject("Excel.Application");
var ExcelSheet = new ActiveXObject("Excel.Sheet");
ExcelSheet.Application.Visible = true;
ExcelSheet.ActiveSheet.Cells(1,1).Value = "This is column A, row 1";
ExcelSheet.SaveAs("d://TEST.XLS");
ExcelSheet.Application.Quit();
}
</script>
<body>
<input type="button" value="遍歷文件夾" onclick="readFolder()">
<input type="button" value="寫excel" onclick="writeExcel()">
</body>
</html>
JavaScript中ActiveXObject對象是啟用并返回 Automation 對象的引用。使用方法:
newObj = new ActiveXObject( servername.typename[, location])
ActiveXObject 對象語法有這些部分:其中newObj是必選項。要賦值為 ActiveXObject 的變量名。
servername是必選項。提供該對象的應用程序的名稱。
typename是必選項。要創建的對象的類型或類。
location是可選項。創建該對象的網絡服務器的名稱。
切記:ActiveX是微軟的東西,故而這玩意兒只有IE才支持!
javaScript中利用ActiveXObject來創建FileSystemObject操作文件
一、功能實現核心:FileSystemObject 對象
要在javascript中實現文件操作功能,主要就是依靠FileSystemobject對象。
二、FileSystemObject編程
使用FileSystemObject 對象進行編程很簡單,一般要經過如下的步驟: 創建FileSystemObject對象、應用相關方法、訪問對象相關屬性 。
(一)創建FileSystemObject對象
創建FileSystemObject對象的代碼只要1行:
var fso = new ActiveXObject("Scripting.FileSystemObject");
上述代碼執行后,fso就成為一個FileSystemObject對象實例。
(二)應用相關方法
創建對象實例后,就可以使用對象的相關方法了。比如,使用CreateTextFile方法創建一個文本文件:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f1 = fso.createtextfile("c://myjstest.txt",true");
(三)訪問對象相關屬性
要訪問對象的相關屬性,首先要建立指向對象的句柄,這就要通過get系列方法實現:GetDrive負責獲取驅動器信息,GetFolder負責獲取文件夾信息,GetFile負責獲取文件信息。比如,指向下面的代碼后,f1就成為指向文件c:/test.txt的句柄:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f1 = fso.GetFile("c://myjstest.txt");
然后,使用f1訪問對象的相關屬性。比如:
執行上面最后一句后,將顯示c:/myjstest.txt的最后修改日期屬性值。
但有一點請注意:對于使用create方法建立的對象,就不必再使用get方法獲取對象句柄了,這時直接使用create方法建立的句柄名稱就可以:
三、操作驅動器(Drives)
使用FileSystemObject對象來編程操作驅動器(Drives)和文件夾(Folders)很容易,這就象在Windows文件瀏覽器中對文件進行交互操作一樣,比如:拷貝、移動文件夾,獲取文件夾的屬性。
(一)Drives對象屬性
Drive對象負責收集系統中的物理或邏輯驅動器資源內容,它具有如下屬性:
l TotalSize:以字節(byte)為單位計算的驅動器大小。
l AvailableSpace或FreeSpace:以字節(byte)為單位計算的驅動器可用空間。
l DriveLetter:驅動器字母。
l DriveType:驅動器類型,取值為:removable(移動介質)、fixed(固定介質)、network(網絡資源)、CD-ROM或者RAM盤。
l SerialNumber:驅動器的系列碼。
l FileSystem:所在驅動器的文件系統類型,取值為FAT、FAT32和NTFS。
l IsReady:驅動器是否可用。
l ShareName:共享名稱。
l VolumeName:卷標名稱。
l Path和RootFolder:驅動器的路徑或者根目錄名稱。
(二)Drive對象操作例程
下面的例程顯示驅動器C的卷標、總容量和可用空間等信息: