JavaScriptを使用してExcelにデータを送信しようとしています。リストにデータを追加して保存して閉じます。私はActiveXを使用するときに私はIEに制限されていることを知っているが、それは大丈夫だ。ActiveXオブジェクトを保存して終了する
私が直面している問題は、終了も保存方法も機能しないことです。私が手動で保存しない限り、プロセスは開いたままで、データは保存されません。
HERESにコード:
function getNumber() {
var Excel = new ActiveXObject("Excel.Application");
var test = Excel.Workbooks.Open("pathToFile");
var LastRow = test.ActiveSheet.Range("A1").CurrentRegion.Rows.Count;
alert(LastRow);
var combine = "A" + (LastRow);
alert(combine);
var getCell = test.ActiveSheet.Range(combine).Value;
var delimiter = '_';
var start = 3;
var tokens = getCell.split(delimiter).slice(start);
var result = parseInt(tokens.join(delimiter));
var newNumber = result + 1;
whichCompany();
var newRow = "A" + (LastRow + 1);
var id = "D_" + selectedName + "_2017_"+ newNumber.toString();
test.ActiveSheet.Range(newRow).Value = id;
alert(id);
newRow = "B" + (LastRow + 1);
var m_names = new Array("Jan", "Feb", "Mar",
"Apr", "May", "Jun", "Jul", "Aug", "Sep",
"Oct", "Nov", "Dec");
var d = new Date();
var curr_date = d.getDate();
var curr_month = d.getMonth();
var curr_year = d.getFullYear();
var dateNow = curr_date + m_names[curr_month] + curr_year;
test.ActiveSheet.Range(newRow).value = dateNow;
newRow = "C" + (LastRow + 1);
test.ActiveSheet.Range(newRow).Value = document.getElementById("fName").value + " " + document.getElementById("lName").value;
newRow = "D" + (LastRow + 1);
internalOrExternal();
test.ActiveSheet.Range(newRow).Value = intOrExt;
newRow = "E" + (LastRow + 1);
test.ActiveSheet.Range(newRow).Value = document.getElementById("case").value;
newRow = "F" + (LastRow + 1);
test.ActiveSheet.Range(newRow).Value = document.getElementById("produkt").value;
Excel.Quit();
}
残念ながら、それは仕事をしなかった。将来の証明ではないことについて。これは、より洗練されたシステムが実装されるまでの単なる回避策です。私が理解していないのは、他の方法が完璧に機能するように見えるが、 "saveas()"と "quit()"はそうではない理由です。これは何らかのパーミッションの問題が原因でしょうか? – Deviator
@Deviatorそうかもしれない。このスクリプトを実行しているアカウントには、保存先の場所への書き込み権限が必要です。 adminアカウントを使用する代わりに、スクリプトがIIS上のサービス内でSYSTEMアカウントで実行されていたため、共有ドライブに書き込めなかった同様の問題が発生しました。 SMB2スクリプトを使用して、正しい資格情報で共有ドライブにアクセスしました。 (サーバ側) – Shilly