導航:首頁 > 版本升級 > js列印本地文件

js列印本地文件

發布時間:2024-05-02 17:24:00

js-列印word程序

JS-列印word的模板程序

我們在做項目中經常遇到“列印表格”的功能,在此介紹一下我所用過的列印方法。

一、比較簡單的做法,word另存轉化為html文件的方式。分析如下:

1、首先我們需要在office中用wrod畫好文件的模板,然後將其另存為thm網頁形式。

2、將其改為jsp頁面,這樣我們就可以文件中使用後來傳過來的變數值。此時就是我們傳統的jsp方式,後台定義參數,然後前台獲取,將變數值寫在我們需要顯示的地方。

3、對於表格,我們可以用循環來控制。

4、這樣做打比較簡單,缺點word模板不能修改,一旦表格做個微小的變化,那我們的工作量也不小,因為word轉化後的代碼很難讀懂,要在代碼上控制其樣式,是相當的困難,所以不推薦這種做法。

(註:1、 在做模板時,我們可以先在需要顯示變數值的地方首先定義好值,然後在jsp中直接替換就行。

2、在jsp頁面中,在首先加入“<%@ page contentType="application/msword;charset=UTF-8"%>”, 以標識此頁面為word文件。

3、如果需要點擊時直接打開word文件,而非彈出“保存、打開”對話框,則需要刪除“xmlns:w="urn:schemas-microsoft-com:office:office"”代碼即可。

下面我們介紹另一種更常用的方法,此方法的有點是:修改word模板文件,不會影響程序。

二、用JS控制的列印方式,具體如下:

1、首先畫word模板,在需要動態顯示內容的地方插入“標簽”。方法如下:在word中,選中需要被替換的內容-->插入-->書簽,為其定義好名字即可,其它類似。

2、將做好的模板文件另存為模板dot文件。

做到這基本就差不多了,接下來就是後台代碼發揮的時候了。

3、在後台封裝參數值。

4、調用JS函數列印。

為了更為直觀的介紹,下面用一完整的例子介紹。

先把代碼貼出來:

1、JS模板文件,適用范圍:

a. 根據文檔文件,所有要顯示的內容都定義為書簽。

b. 純表格文件。如果為多個表格或表格中嵌套表格,則需要稍加修改。

c. 文檔、表格混搭型。

代碼如下:

/** * 得到 文件模板的目錄 * @param {} fileName * @return {} */ function getFileTemplatePath(fileName){ var path = "/page/printTemplate/" + fileName + ".dot"; var url="http://"+window.location.hostname + ":" + window.location.port+ this.getContextPath() + path; return url; } /** * 調出word模板,並為標簽賦值 * @param {} jsonObj json對象 * @param {} fileName 所要打開的word文件名 */ function printWord(jsonObj,fileName){ var word=new ActiveXObject("Word.Application"); word.Visible=true; var url= this.getFileTemplatePath(fileName); word.Documents.add(url) for(i=0;i<jsonObj.length;i++){ if ((jsonObj[i].text)!="list"){ range=word.ActiveDocument.Bookmarks(jsonObj[i].text).Range; range.text=jsonObj[i].value; }else{ var myTable=word.ActiveDocument.Tables(1); var rowsCount = myTable.Rows.Count; var iRow=2; for(j=0;j<jsonObj[i].value.length;j++){ if (iRow > rowsCount){ myTable.Rows.Add(); } var length = jsonObj[i].value[j].length; for(var k=0; k<length; k++){ myTable.Rows(iRow).Cells(k + 1).Range.Text=jsonObj[i].value[j][k].value; } iRow ++; } } } word.Visible=true; }

2、看到代碼就會明白,這段代碼需要一個JSON類型的參數。

下一步我們所做的工作就是要在JSON上做文章了。 附後台代碼(封裝JSON,java)

類:PrintJSONObjectSet

import org.json.JSONArray; import org.json.JSONObject; public class PrintJSONObjectSet { private JSONArray ja; public PrintJSONObjectSet(){ ja = new JSONArray(); } public JSONArray getJSONArray(){ return ja; } public JSONObject json(Object key, Object value) throws Exception{ JSONObject jo = new JSONObject(); value = "".equals(value) || value == null "" : value; jo.put("text", key); jo.put("value", value); return jo; } public void put(Object key, Object value) throws Exception{ ja.put(json(key,value)); } public void put(Object obj){ ja.put(obj); } }

列印封裝的方法:

/** * 列印出國(境)證明 * @return * @throws Exception */ public String printChuGuoJingZhengMing() throws Exception{ JSONArray ja = new JSONArray(); GroupInfo group = this.getGroupInfo(); String[] countrys = this.getCountrys(); if(countrys != null){ for(int c=0; c<countrys.length; c++){ PrintJSONObjectSet js = new PrintJSONObjectSet(); SeedGroupRef seed = seedImpl.getCzcz(getGroupInfoId(),countrys[c]); js.put("year", seed.getFileYear()); js.put("fileNum", seed.getFileNum()); js.put("leader",group.getLeader()); js.put("groupCount", group.getGroupCount()); js.put("country",countrys[c]); js.put("dispCode",getDispCode()); js.put("printYear", DateFunc.getPrintYear()); js.put("printMonth", DateFunc.getPrintMonth()); js.put("printDay", DateFunc.getPrintDay()); PrintJSONObjectSet js2 = new PrintJSONObjectSet(); List<MemberInfo> memberList = this.getIsSefMembers(); MemberInfo member; for(int i=0; i<memberList.size(); i++){ PrintJSONObjectSet js3 = new PrintJSONObjectSet(); member = memberList.get(i); js3.put("name1",member.getName()); js3.put("passportNum1",member.getPassportNum()); if(++i < memberList.size()){ member = memberList.get(i); js3.put("name2",member.getName()); js3.put("passportNum2",member.getPassportNum()); } js2.put(js3.getJSONArray()); } js.put("list", js2.getJSONArray()); ja.put(js.getJSONArray()); } } PrintWriter out; System.out.println(ja.toString()); try{ out = response.getWriter(); out.print(ja.toString()); out.close(); }catch(Exception e){ e.printStackTrace(); } return null; }

對於JSON的說明:

1、最外層為一個JSONArray,這個JSON中包含多個JSONArra,其控制文檔的數量。

2、在第二層JSONArray中,包含多個JSONObject。其中每個JSONObject包含一個JSONObject對象。

每個JSONObject對象以{"text":"name","value":"張三"}的形式存儲。

3、遇到表格時,則在第二個JSONArray中,封裝類型{"text":"list","value":[[{"text":"","value:""}]]}形式。

也就是說此時的JSONObject的值必須為list,只有這樣,JS中才能將其作為表格來輸入。

其中在名為 list 的JSONObject對象中,包含多個JSONArray,用來控制行數。

每個JSONArray中包含多個類型第2條中形式的JSONObject對象,用來控制列數。

調用方法:(採用aJax)

Ext.Ajax.request({ url : href, success : function(response, options) { var responseText = response.responseText; var jsonObj=eval('(' + responseText + ')'); for(var i=0; i<jsonObj.length; i++){ printWord(jsonObj[i],'chuGuoJingZhengMing'); } }, failure : function(response, options) { alert("fail!"); } });

例子中的word文件:

如果國家為多個時,則會列印出多個文件。

對於代碼的說明:

在後台代碼封裝中,我們將 書簽名 和 值 封裝為一個JSON對象,這樣JS處理中,我們就方便了,不用再逐個寫出每個書簽的`名字,供其查找、然後賦值。

在後台代碼中,我這里在列印時需要根據國家來確定所要列印的文檔數量,如果為多個國家則要列印出多個文檔,所以在後台封裝,最外層又加了一個JSONArray,JS中也多了一道循環,這個可以根據需要自己調整。

特殊情況下,需要我們單獨處理,如多個表格的情況下,或者表格嵌套表格。

這里說一下表格嵌套的情況下,如果獲得被嵌套的表格對象。

如:var myTable=word.ActiveDocument.Tables(1).Rows(1).Cells(1).Tables(1);

這里得到的是文檔中第一個表格的第一行的每一列中的每一個表格對象,其它類似。

range=word.ActiveDocument.Bookmarks("name").Range 的意思是 得到文檔中 書簽名為“name”的對象。

range.text=“張三” 為其賦值為 張三。

這里採用的是dot文件,因為dot文件存在於伺服器上,如果使用doc文件作為模板文件的話,在多人訪問時,會出現線程鎖死的情況,故採用dot文件。

附加一段生成好的JSON串:

[ [ {"text":"year","value":2011}, {"text":"fileNum","value":5}, {"text":"leader","value":"彭瓚"}, {"text":"groupCount","value":5}, {"text":"country","value":"俄羅斯"}, {"text":"dispCode","value":"dispCode"}, {"text":"printYear","value":"2011"}, {"text":"printMonth","value":"04"}, {"text":"printDay","value":"07"}, {"text":"list","value":[[ {"text":"name1","value":"彭瓚"}, {"text":"passportNum1","value":""}, {"text":"name2","value":"郭沁明"}, {"text":"passportNum2","value":""} ], [ {"text":"name1","value":"張三五"}, {"text":"passportNum1","value":""}, {"text":"name2","value":"彭瓚"}, {"text":"passportNum2","value":""} ], [ {"text":"name1","value":"郭沁明"}, {"text":"passportNum1","value":""}, {"text":"name2","value":"張三五"}, {"text":"passportNum2","value":""} ] ] } ], [ {"text":"year","value":2011}, {"text":"fileNum","value":7}, {"text":"leader","value":"彭瓚"}, {"text":"groupCount","value":5}, {"text":"country","value":"韓國"}, {"text":"dispCode","value":"dispCode"}, {"text":"printYear","value":"2011"}, {"text":"printMonth","value":"04"}, {"text":"printDay","value":"07"}, {"text":"list","value":[ [ {"text":"name1","value":"彭瓚"}, {"text":"passportNum1","value":""}, {"text":"name2","value":"郭沁明"}, {"text":"passportNum2","value":""} ], [ {"text":"name1","value":"張三五"}, {"text":"passportNum1","value":""}, {"text":"name2","value":"彭瓚"}, {"text":"passportNum2","value":""} ], [ {"text":"name1","value":"郭沁明"}, {"text":"passportNum1","value":""}, {"text":"name2","value":"張三五"}, {"text":"passportNum2","value":""} ] ] } ] ]

;

㈡ 怎麼使用ActiveX控制項 實現用js獲取本地電腦中某個文件夾中的所有TXT文件 並讀取其中的數據

單擊「開始」,指向「設置」,單擊「控制面板」,雙擊「添加/刪除程序」,然後單擊「安裝/卸載」選項卡。 2. 如果您要刪除的 ActiveX 控制項出現在安裝的程序列表中,請單擊該 ActiveX 控制項,單擊「添加/刪除」,然後按照屏幕上的說明操作。如果該 ActiveX 控制項沒有出現在安裝的程序列表中,則繼續執行下一步。 3. 單擊「開始」,單擊「運行」,在「打開」框中鍵入下列行,然後單擊「確定」: regsvr32 drive:\windows\occache\filename.ocx /u 注意:drive 是 Windows 文件夾所在的驅動器號,windows 是安裝 Windows 的文件夾名,而 filename.ocx 是您想要刪除的 ActiveX 控制項。 注意:如果您不知道要刪除的 ActiveX 控制項 (.ocx) 的文件名,則可以通過查看安裝或使用 ActiveX 控制項的 Web 頁的超文本標記語言 (HTML) 源文件來確定該文件名。若要查看一個 Web 頁的 HTML 源文件,請右擊該 Web 頁的空白區域,然後單擊「查看源文件」。 4. 在 Windows 資源管理器或 Windows NT 資源管理器中,單擊 Windows\Occache 文件夾中的 .ocx 文件,然後單擊「文件」菜單上的「刪除」。 Occache 是在 Internet Explorer 3.x 的所有版本中安裝有 ActiveX 控制項的文件夾的名稱。Regsvr32.exe 文件是由 Internet Explorer 安裝的,並且可用於注冊和刪除 ActiveX 控制項的注冊表項。 Internet Explorer 4.x 或更高版本(所有平台) Internet Explorer 4.x 或更高版本,包括 Occache.dll 文件,該文件可用於使用「shell 文件夾」枚舉、更新和安全地卸載 ActiveX 控制項。 1. 單擊「開始」,指向「設置」,單擊「控制面板」,雙擊「添加/刪除程序」,然後單擊「安裝/卸載」選項卡。 2. 如果您要刪除的 ActiveX 控制項出現在安裝的程序列表中,請單擊該 ActiveX 控制項,單擊「添加/刪除」,然後按照屏幕上的說明操作。如果該 ActiveX 控制項沒有出現在安裝的程序列表中,則繼續執行下一步。 3. 在 Windows 資源管理器或 Windows NT 資源管理器中,雙擊 Windows\Downloaded Program Files 文件夾或 Winnt\Downloaded Program Files 文件夾,右擊您想要刪除的 ActiveX 控制項,然後單擊「刪除」。 4. 在系統提示您是否刪除該 ActiveX 控制項後,單擊「是」。 重要說明:如果您正運行 Internet Explorer 4.0,則不應刪除以下 ActiveX 控制項: ?? DirectAnimation Java Classes ?? Internet Explorer Classes for Java ?? Microsoft XML Parser for Java ?? Win32 Classes Internet Explorer 5.0 或更高版本不要求 Downloaded Program Files 文件中的這些組件。 刪除 ActiveX 控制項時出現的錯誤信息 在您嘗試使用 Occache shell 文件夾刪除一個 ActiveX 控制項時,可能顯示以下錯誤信息之一: ?? Share Violation These program files are currently being used by one or more programs.Please close some programs, and try again.You may need to restart Windows. ?? Component Removal About to remove a Windows system DLL:(<path\filename).Okay to delete?共享沖突:如果您正要刪除的 ActiveX 控制項當前在內存中由 Internet Explorer 或「活動桌面」組件載入,則顯示此錯誤信息。 若要解決此錯誤信息,請按照下列步驟操作: 1. 關閉所有打開的 Internet Explorer 窗口。 2. 禁用「活動桌面」。為此,請右擊桌面上的空白區域,指向 Active Desktop,然後單擊「按 Web 頁查看」以清除該復選標記。 3. 按照本文中前面部分的「Internet Explorer 4.0 或更高版本」部分中介紹的步驟,刪除該 ActiveX 控制項。 注意:您最好在刪除 ActiveX 控制項前重新啟動 Windows。 組件刪除:當您要刪除的 ActiveX 控制項向已注冊的 Occache 文件夾以外的文件夾(例如,Windows\System 或 Winnt\System32)安裝文件時,該信息只出現在 4.01 Service Pack 1 (SP1) 之前的 Internet Explorer 4 版本中。Occache 不是總能確定這些文件是否正由其程序共享。 如果您確定消息中顯示的一個或多個文件未由 Windows 或其他程序使用,請單擊「是」。否則,單擊「否」。

㈢ firefox瀏覽器下用JS的方式導出excel

firefox瀏覽器下用JS的方式導出excel,可以依照以下方法:
1、沒有具體的代碼,但是可以為您提供一個實現思路。我們知道js導出文件實際就是輸出二進制文件(前提是您的瀏覽器許可權足以讓您的js腳本訪問本地文件),您只需要按照excel(組建單的是csv的格式)進行文件輸出即可,但是對於功能較為復雜的excel文件(如包含有函數、單元格鎖定等)則僅僅用js是無法實現的,推薦考慮使用jxls等專用伺服器端組件。
2、用下面這個方法來來導出excel
function exp() {
try{
windows.clipboardData.setData("Text",document.all('table1').outerHTML);
var ExApp = new ActiveXObject("Excel.Application")
var ExBk = ExApp.workbooks.add()
var ExWSh = ExWBk.worksheets(1)
ExApp.DisplayAlerts = false
ExApp.visible = true
}catch(e){
top.Dialog.alert("xxxxxxxxxxxxxxxx")
return false
}
ExWBk.worksheets(1).Paste;
3、也可以這樣:
<object style='display:none' classid="clsid:0002E559-0000-0000-C000-000000000046" id="EXPORT_OBJECT1"></object>
<script type="text/javascript">
EXPORT_OBJECT1. EXPORT_OBJECT1.Export([Filename],[Action],[Fromat]);
</script>

㈣ js怎麼做本地的視頻文件的預覽

用這個方法:varWordApp=newActiveXObject("Word.Application");//註:IE的ActiveX安全性能放開才行WordApp.Application.visible=false;varDoc=WordApp.documents.open(path);//對word的操作見office的MSDNWordApp.quit();

㈤ 如何用JS 獲取本地文件夾的文件列表

一、功能實現核心:FileSystemObject 對象
要在java-script中實現文件操作功能,主要就是依靠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訪問對象的相關屬性。比如:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f1 = fso.GetFile("c:\\myjstest.txt");
alert("File last modified: " + f1.DateLastModified);
執行上面最後一句後,將顯示c:\myjstest.txt的最後修改日期屬性值。
但有一點請注意:對於使用create方法建立的對象,就不必再使用get方法獲取對象句柄了,這時直接使用create方法建立的句柄名稱就可以:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f1 = fso.createtextfile("c:\\myjstest.txt",true");
alert("File last modified: " + f1.DateLastModified);
三、操作驅動器(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的卷標、總容量和可用空間等信息:
var fso, drv, s ="";
fso = new ActiveXObject("Scripting.FileSystemObject");
drv = fso.GetDrive(fso.GetDriveName("c:\\"));
s += "Drive C:" + " - ";
s += drv.VolumeName + "\n";
s += "Total Space: " + drv.TotalSize / 1024;
s += " Kb" + "\n";
s += "Free Space: " + drv.FreeSpace / 1024;
s += " Kb" + "\n";
alert(s);
四、操作文件夾(Folders)
涉及到文件夾的操作包括創建、移動、刪除以及獲取相關屬性。
Folder對象操作常式 :
下面的常式將練習獲取父文件夾名稱、創建文件夾、刪除文件夾、判斷是否為根目錄等操作:
var fso, fldr, s = "";
// 創建FileSystemObject對象實例
fso = new ActiveXObject("Scripting.FileSystemObject");
// 獲取Drive 對象
fldr = fso.GetFolder("c:\\");
// 顯示父目錄名稱
alert("Parent folder name is: " + fldr + "\n");
// 顯示所在drive名稱
alert("Contained on drive " + fldr.Drive + "\n");
// 判斷是否為根目錄
if (fldr.IsRootFolder)
alert("This is the root folder.");
else
alert("This folder isn't a root folder.");
alert("\n\n");
// 創建新文件夾
fso.CreateFolder ("C:\\Bogus");
alert("Created folder C:\\Bogus" + "\n");
// 顯示文件夾基礎名稱,不包含路徑名
alert("Basename = " + fso.GetBaseName("c:\\bogus") + "\n");
// 刪除創建的文件夾
fso.DeleteFolder ("C:\\Bogus");
alert("Deleted folder C:\\Bogus" + "\n");
五、操作文件(Files)
對文件進行的操作要比以上介紹的驅動器(Drive)和文件夾(Folder)操作復雜些,基本上分為以下兩個類別:對文件的創建、拷貝、移動、刪除操作和對文件內容的創建、添加、刪除和讀取操作。下面分別詳細介紹。
(一)創建文件
一共有3種方法可用於創建一個空文本文件,這種文件有時候也叫做文本流(text stream)。
第一種是使用CreateTextFile方法。代碼如下:
var fso, f1;
fso = new ActiveXObject("Scripting.FileSystemObject");
f1 = fso.CreateTextFile("c:\\testfile.txt", true);
第二種是使用OpenTextFile方法,並添加上ForWriting屬性,ForWriting的值為2。代碼如下:
var fso, ts;
var ForWriting= 2;
fso = new ActiveXObject("Scripting.FileSystemObject");
ts = fso.OpenTextFile("c:\\test.txt", ForWriting, true);
第三種是使用OpenAsTextStream方法,同樣要設置好ForWriting屬性。代碼如下:
var fso, f1, ts;
var ForWriting = 2;
fso = new ActiveXObject("Scripting.FileSystemObject");
fso.CreateTextFile ("c:\\test1.txt");
f1 = fso.GetFile("c:\\test1.txt");
ts = f1.OpenAsTextStream(ForWriting, true);
(二)添加數據到文件
當文件被創建後,一般要按照「打開文件->填寫數據->關閉文件」的步驟實現添加數據到文件的目的。
打開文件可使用FileSystemObject對象的OpenTextFile方法,或者使用File對象的OpenAsTextStream方法。
填寫數據要使用到TextStream對象的Write、WriteLine或者WriteBlankLines方法。在同是實現寫入數據的功能下,這3者的區別在於:Write方法不在寫入數據末尾添加新換行符,WriteLine方法要在最後添加一個新換行符,而WriteBlankLines則增加一個或者多個空行。
關閉文件可使用TextStream對象的Close方法。
(三)創建文件及添加數據常式
下面的代碼將創建文件、添加數據、關閉文件幾個步驟結合起來進行應用:
var fso, tf;
fso = new ActiveXObject("Scripting.FileSystemObject");
// 創建新文件
tf = fso.CreateTextFile("c:\\testfile.txt", true);
// 填寫數據,並增加換行符
tf.WriteLine("Testing 1, 2, 3.") ;
// 增加3個空行
tf.WriteBlankLines(3) ;
// 填寫一行,不帶換行符
tf.Write ("This is a test.");
// 關閉文件
tf.Close();
(四)讀取文件內容
從文本文件中讀取數據要使用TextStream對象的Read、ReadLine或ReadAll 方法。Read方法用於讀取文件中指定數量的字元; ReadLine方法讀取一整行,但不包括換行符;ReadAll方法則讀取文本文件的整個內容。讀取的內容存放於字元串變數中,用於顯示、分析。

方法或者屬性 描述
BuildPath()
生成一個文件路徑
CopyFile() 復制文件
CopyFolder() 復制目錄
CreateFolder() 創建新目錄
CreateTextFile() 生成一個文件
DeleteFile() 刪除一個文件
DeleteFolder() 刪除一個目錄
DriveExists() 檢驗盤符是否存在
Drives 返回盤符的集合
FileExists() 檢驗文件是否存在
FolderExists 檢驗一個目錄是否存在
GetAbsolutePathName() 取得一個文件的絕對路徑
GetBaseName() 取得文件名
GetDrive() 取得盤符名
GetDriveName() 取得盤符名
GetExtensionName() 取得文件的後綴
GetFile() 生成文件對象
GetFileName() 取得文件名
GetFolder() 取得目錄對象
GetParentFolderName 取得文件或目錄的父目錄名
GetSpecialFolder() 取得特殊的目錄名
GetTempName() 生成一個臨時文件對象
MoveFile() 移動文件
MoveFolder() 移動目錄
OpenTextFile() 打開一個文件流

f.Files //目錄下所有文件集合
f.attributes //文件屬性
Case 0 Str="普通文件。沒有設置任何屬性。 "
Case 1 Str="只讀文件。可讀寫。 "
Case 2 Str="隱藏文件。可讀寫。 "
Case 4 Str="系統文件。可讀寫。 "
Case 16 Str="文件夾或目錄。只讀。 "
Case 32 Str="上次備份後已更改的文件。可讀寫。 "
Case 1024 Str="鏈接或快捷方式。只讀。 "
Case 2048 Str=" 壓縮文件。只讀。"
f.Datecreated // 創建時間
f.DateLastAccessed //上次訪問時間
f.DateLastModified // 上次修改時間
f.Path //文件路徑
f.Name //文件名稱
f.Type //文件類型
f.Size // 文件大小(單位:位元組)
f.ParentFolder //父目錄
f.RootFolder // 根目錄

㈥ web如何實現客戶端列印在線文件(pdf,word,excel等),同時可以控制列印設置

WEB軟體打來印功能實現方式自:
1、瀏覽器本身的列印功能,效果最差。
2、在web伺服器上產生好PDF或Excel文件,下載到本地列印。很多在伺服器端運行的報表軟體採用這樣的方式。因為就是下載文件,所以各種瀏覽器都支持。缺點就用戶操作麻煩,伺服器附載大。
3、報表插件方式,可以做到與桌面軟體一樣的列印功能,這種方式實現的效果最好。缺點就是插件是針對特定瀏覽器的,不能做到支持各種瀏覽器,報表插件一般是支持IE瀏覽器。
綜合考慮,看用哪種方式合適。

㈦ 什麼代碼可以用js或jquery生成本地txt文件

很難實現直接創建文件到本地,因為許可權不允許。但可以彈出一個另存為對話框,讓用戶點一下確定就保存。所以代碼可以用js或jquery生成本地txt文件。

㈧ 如何用js遍歷本地文件

覺得你必須提供server,能夠返回html路徑列表,然後用js定時非同步查詢

㈨ nunjucks生成數據如何在js文件中列印

Nunjucks 是一個更復雜的 JavaScript 模板引擎,提供豐富的語言特性和塊繼承、自動轉移、宏和非同步控制等等。
之前項目一直使用的是art-template模板引擎, 今天在別人的項目中見到使用Nunjucks模板引擎,真的很強大,用過的人都說好!
我們的項目都是thinkjs做的,我這里也用的是thinkjs,引用的內容基本上都是thinks官網的配置方法
首先是樣創建新的項目,創建項目就說了,詳細見官網,創建好項目,
第一步是創建adapter裡面創建兩個文件base.js和nunjucks.js,nunjucks.js繼承base.js
base.js程序如下:
'use strict';
import fs from 'fs';
/**
* template base class
* @type {Class}
*/
export default class extends think.adapter.base {
/**
* merge config
* @param {Object} defaultConf []
* @param {Object} extraConf []
* @return {} []
*/
parseConfig(defaultConf, extraConf){
let config = think.parseConfig(think.extend({}, defaultConf, think.config('view'), extraConf));
//compatibility with view.options
if(!think.isEmpty(config.options)){
think.log(`view.options is deprecated, use view.adapter.${config.type} instead`, 'WARNING');
config = think.extend(config, config.options);
}
return config;
}
/**
* pre render
* @param {Object} config []
* @param {...[type]} args []
* @return {} []
*/
prerender(config = {}, ...args){
if(think.isFunction(config.prerender)){
config.prerender(...args);
}
}
/**
* get template file content
* @return {} []
*/
async getContent(file){
let stat = await think.promisify(fs.stat, fs)(file);
let mTime = stat.mtime.getTime();
let fileCache = thinkCache(thinkCache.VIEW_CONTENT, file);
if(fileCache && fileCache[0] >= mTime){
return fileCache[1];
}
return think.await(`template_${file}`, () => {
let fn = think.promisify(fs.readFile, fs);
return fn(file, 'utf8');
}).then(content => {
//if content is empty, not cached
if(!content){
return content;
}
thinkCache(thinkCache.VIEW_CONTENT, file, [mTime, content]);
return content;
});
}
/**
* run
* @param {String} templateFile []
* @param {Object} tVar []
* @return {promise} []
*/
run(templateFile){
return this.getContent(templateFile);
}
}
nunjucks.js裡面程序如下:
'use strict';
import path from 'path';
import Base from './base.js';
/**
* nunjucks template
* @type {Class}
*/
export default class extends Base {
/**
* run
* @param {String} templateFile []
* @param {Object} tVar []
* @return {Promise} []
*/
async run(templateFile, tVar, config){
let options = this.parseConfig({
autoescape: true,
watch: false,
noCache: false,
throwOnUndefined: false
}, config);
let nunjucks = await think.npm('nunjucks');
let env;
if(options.root_path){
//if templateFile not start with root_path, can not set root_path
if(path.isAbsolute(templateFile) && templateFile.indexOf(options.root_path) !== 0){
env = nunjucks.configure(options);
}else{
env = nunjucks.configure(options.root_path, options);
}
}else{
env = nunjucks.configure(options);
}
env.addGlobal('think', think);
env.addGlobal('JSON', JSON);
env.addGlobal('eval', eval);
this.prerender(options, nunjucks, env);
let fn = think.promisify(nunjucks.render);
return fn(templateFile, tVar);
}
}

閱讀全文

與js列印本地文件相關的資料

熱點內容
怎麼把ps源文件字體改清楚 瀏覽:440
u盤如何恢復win10系統下載 瀏覽:153
完美世界100級升級攻略 瀏覽:67
安卓手機去除廣告軟體 瀏覽:529
水果禮品卡網站有哪些 瀏覽:272
愛譜數據線纜多少錢 瀏覽:165
word轉換成圖片格式 瀏覽:182
移動數據收費標準是多少 瀏覽:952
me525微信451去升級版 瀏覽:152
如何把壓縮文件變成永久文件 瀏覽:828
數據分片最大值多少 瀏覽:598
會玩app開完小號如何找回大號 瀏覽:939
html顯示flash代碼 瀏覽:651
while語句java 瀏覽:376
iphone鉻黃ps 瀏覽:529
linux掛載到已有分區 瀏覽:327
飛行員報告的數據都有哪些 瀏覽:482
騰訊視頻app怎麼傳視頻 瀏覽:125
數控銑床上銑平面怎麼編程 瀏覽:667
網路通信安全員是干什麼的 瀏覽:690

友情鏈接