2015-03-27 3 views
0

Я довольно новичок в JavaScript (и кодировании в этом отношении). Проблема заключается в следующем.Вызвать файл Excel с помощью JavaScript

Я ищу способ вызова файла Excel и установки некоторых фильтров в документе при его выполнении. Таким образом, запрашиваемый файл появится, как указано. Это должно работать на Windows 8.1.

ActiveX, по-видимому, не работает. У кого-нибудь есть идея, как это сделать? Существует ли замена объектов ActiveX?

Любая помощь очень ценится.

Ниже код, который я до сих пор:

var sId = "1989"; 

var app = "Excel.Application"; 
var path = "C:\\Temp\\UmsatzGL.xls"; 
var sheet = "Output"; 
var range = "FilterWE"; 
var filterdefault = "(Alle)"; 

return_wbook = "T"; 
return_sheet = "T"; 
return_range = "T"; 

var UsrLanguage = "de"; 

switch (UsrLanguage) { 
    case "de": 
    alert_wbook = 'Excelmappe ' +path+' kann nicht gefunden werden!'; 
    alert_sheet = 'Arbeitsblatt ' +sheet+' ist nicht vorhanden!'; 
    alert_range = 'Bereich ' +range+' ist nicht vorhanden!'; 
    alert_content = 'Kunde ' +sId+' ist nicht vorhanden!'; 
    break; 
    case "en": 
    alert_wbook = 'Excel-File ' +path+' does not exist!'; 
    alert_sheet = 'Worksheet ' +sheet+' does not exist!'; 
    alert_range = 'Range ' +range+' does not exist!'; 
    alert_content = 'Customer ' +sId+' does not exist!'; 
    break; 
    default: 
    alert_wbook = 'Excel-File ' +path+' does not exist!'; 
    alert_sheet = 'Worksheet ' +sheet+' does not exist!'; 
    alert_range = 'Range ' +range+' does not exist!'; 
    alert_content = 'Customer ' +sId+' does not exist!'; 
    break; 
} 

function my_get_app(app){ 
try{return GetObject('',app)} 
catch(e){return my_start_app(app)} 
} 

function my_start_app(app){ 
return new ActiveXObject(app) 
} 

function my_get_wbook(path){ 
try{return excel.Workbooks.Open(path)} 
catch(e){return_wbook = "F";} 
} 

function my_get_sheet(sheet){ 
try{return excel.Worksheets(sheet)} 
catch(e){return_sheet = "F";} 
} 

function my_get_range(range){ 
try{return excel_sheet.range(range)} 
catch(e){return_range = "F";} 
} 

var excel = my_get_app(app); 
var excel_file = my_get_wbook(path); 
var excel_sheet = my_get_sheet(sheet); 
var excel_range = my_get_range(range); 

excel.displayalerts = false; 

if (return_wbook == "F") { 
          alert(alert_wbook); 
          excel.quit(); 
    } else if (return_sheet == "F") { 
          alert(alert_sheet); 
          excel.quit(); 
    } else if (return_range == "F") { 
           alert(alert_range); 
           excel.quit(); 
            } 

if (return_wbook != "F" && return_sheet != "F" && return_range != "F") { 
     excel_range.value = filterdefault; 
     try{ 
      excel_range.value = sId; 
      excel.Visible=true; 
      excel_sheet.Activate; 
      } 
     catch(e){ 
       alert(alert_content); 
       excel.quit(); 
       } 
    } 

close(); 
} 
+0

На первый взгляд, я не вижу ничего плохого - следует отметить, однако, что ActiveXObject будет работать только в Internet Explorer , Это браузер, который вы используете? – enhzflep

ответ

0

Я не так много довольно знаю, что это ваша проблема. Но я могу ссылаться на плагин, который может дать вам толчок.

https://github.com/SheetJS/js-xlsx

Я нашел пример кода на Javascript Excel OpenFile

<html> 

    <body> 

    <form name="form1"> 
     <input type=button onClick="test()" value="Open File"> 
     <br><br> 
    </form> 

    <script type="text/javascript"> 
     function test() { 
     var Excel = new ActiveXObject("Excel.Application"); 
     Excel.Visible = true; 
     Excel.Workbooks.Open("teste.xlsx"); 
     } 
    </script> 
    </body> 
</html>