讀取跨網域主機的excel,以上一頁,下一頁來顯示
(http://tung.tsu.edu.tw/lecture/jquery_phoneGap/excel/employee.xlsx) ( 限用I.E.瀏覽器,才能顯示,第1次讀取跨網域檔案要多等幾秒)


 


1.重要觀念:
(1).若要讀取excel檔案,必需在I.E.瀏覽器才能讀取(使用chrome, opera都不行,因為只有同是微軟的產品,才能讀取)

(2).讀取excel的方式,以下三種方法,只有2種可以

(A).讀取client端excel(OK),必須指定client電腦完整路徑,例如:c:\\excel\\employee.xlsx
(B).讀取server端excel(不OK),server端網頁,無法讀取server電腦路徑c:\\employee.xlsx,server端網頁所讀取的還是client端上面的excel檔案
(C).讀取跨網域主機excel(OK),必須指定跨網域server電腦完整url,例如:http://tung.tsu.edu.tw/lecture/jquery_phoneGap/excel/employee.xlsx

2.容易發生的錯誤,與注意事項:

(A).讀取跨網域server電腦的excel檔,因為還要等待網路傳輸,會要多等一些時間

(B).有些電腦的I.E.,因為安全性設定,不允許開啟ActiveXObject物件,所以不能開啟excel,解決辦法是,要自行手動設定,開啟ActiveXObject物件,:

//重要事項: ActiveX 物件可能存在安全性問題。
若要使用 ActiveXObject,您可能需要在 Internet Explorer 中針對相關的安全性區域調整安全性設定。

方法:
打開I.E.,上方功能表:[工具]→[網際網路選項]→[安全性]→[近端內部網路]→[自訂等級]→找[將未標示成安全的 ActiveX 控制項初始化並執行指令碼]:調整按鈕為『啟用』。

3.讀取跨網域excel的方法與步驟:

(A).開啟excel excleApp變數(還不是物件陣列)

var excelFile = "http://tung.tsu.edu.tw/lecture/jquery_phoneGap/excel/employee.xlsx";


//開啟excel excleApp變數(還不是物件陣列)
var excleApp =new ActiveXObject("Excel.Application");
excleApp.Workbooks.Open(excelFile);

(B).把excleApp資料轉成excelobj物件陣列

//把excleApp資料轉成excelobj物件陣列
excelobj = new Array();
for(i=0;i<12;i++){
excelobj[i] = new Object();

excelobj[i].id = excleApp.Worksheets("員工").Cells(i+2,1).value;
excelobj[i].name = excleApp.Worksheets("員工").Cells(i+2,2).value;
excelobj[i].englishname = excleApp.Worksheets("員工").Cells(i+2,3).value;
excelobj[i].title = excleApp.Worksheets("員工").Cells(i+2,4).value;
excelobj[i].birthday = excleApp.Worksheets("員工").Cells(i+2,6).value;
excelobj[i].address = excleApp.Worksheets("員工").Cells(i+2,8).value;
excelobj[i].tel = excleApp.Worksheets("員工").Cells(i+2,13).value;

(D).上一頁下一頁顯示單筆資料

var excelobj;
var i;
function changedata(i) {
str ="編號: "
str += excelobj[i].id;
str +="<br/>姓名: ";
str +=excelobj[i].name;
str +="<br/>英文名: ";
str += excelobj[i].englishname;
str +="<br/>職稱: ";
str += excelobj[i].title;
str +="<br/>生日: ";
str += excelobj[i].birthday
str +="<br/>住址: ";
str += excelobj[i].address;
str +="<br/>電話: ";
str += excelobj[i].tel;
document.getElementById("id01").innerHTML = str; }

function next() {
i++;
if(i>excelobj.length){i=0;}
changedata(i); }

function previous() {
i--;
if(i<0){i=excelobj.length-1;}
changedata(i); }

 

4.employee.xlsx員工資料表內容

員工編號 姓名 英文名 職稱 稱呼 出生日期 雇用日期 地址 城市 行政區 區域號碼 國家地區 電話號碼
1 張瑾雯 Mary 業務 小姐 1968/12/8 1992/1/5 北市仁愛路二段56號 台北市 中山 98122 (02) 2555-9857
2 陳季暄 Bradley 業務經理 先生 1952/2/19 1992/8/14 北市敦化南路一段1號 台北市 大同 98401 (02) 2555-9482
3 趙飛燕 Kim 業務 小姐 1963/8/30 1992/4/1 北市忠孝東路四段4 號 台北市 松山 98033 (02) 2555-3412
4 林美麗 Chris 業務 小姐 1958/9/19 1993/5/3 北市南京東路三段3號 台北市 景美 98052 (02) 2555-8122
5 劉天王 Mike 業務經理 先生 1955/3/4 ######## 北市北平東路24號 台北市 松山 98552 (02) 2555-4848
6 黎國明 Bill 業務 先生 1963/7/2 ######## 北市中山北路六段88號 台北市 中山 15524 (02) 2555-7773
7 郭國臹 Steven 業務 先生 1960/5/29 1994/1/2 北市師大路67號 台北市 大同 55555 (02) 2555-5598
8 蘇涵蘊 Maggie 業務主管 小姐 1958/1/9 1994/3/5 北市紹興南路99號 台北市 信義 88888 (02) 2555-1189
9 孟庭亭 Linda 業務 小姐 1969/7/2 ######## 北市信義路二段120號 台北市 大同 33333 (02) 2555-4444
12 賴俊良 Eddie 資深工程師 先生 1972/12/6 1995/12/6 北市北平東路24 號3 樓之一 台北市 信義 11112 3224932
13 何大樓 David 助手 先生 1961/12/6 1993/12/6 北市北平東路24 號3 樓之一 台北市 景美 53432 3224932
14 王大德 John 工程師 先生 ######## ######## 北市北平東路24 號3 樓之一 台北市 內湖 53432 3224931