我想用javascript将数据发送到excel-list,将数据添加到列表中,保存并关闭列表。我知道何时使用ActiveX我只限于IE浏览器,但那没关系。保存并退出ActiveX对象
我面临的问题是既不退出也不保存方法工作。该进程保持打开状态,数据不会保存,除非我手动保存。
赫雷什的代码:
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它可能是。运行此脚本的帐户显然必须对要保存的位置拥有写入权限。我们有一个类似的问题,我们无法写入共享驱动器,因为脚本运行在SYSTEM acount下的IIS服务中,而不是使用管理员帐户。结束使用SMB2脚本以正确的凭据访问共享驱动器。 (服务器端) – Shilly