JSA直连数据库
不知道现在JSA是否支持直连数据库了,如果有就最好了,这是一个非常必要的功能。
我是这么变通处理的,也是通过jsa执行sql的一种方法,demo分享给大家:
function get_access(){
let connstr="OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\\n\\1.accdb;"
let sql="select * from test"
let d=ActiveSheet.QueryTables.Add(connstr,ActiveSheet.Range("a1"),sql)
d.Refresh()
console.log(1)
}
function getaccess_odbc(){
let connstr="ODBC;Driver={Microsoft Access Driver (*.mdb, *.accdb)};User ID=Admin;DBQ=C:/n/1.accdb;"
let sql="select * from test"
let d=ActiveSheet.QueryTables.Add(connstr,ActiveSheet.Range("a1"),sql)
d.Refresh()
console.log(1)
}
function getexcel(){
let connstr=`OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Data Source=${ThisWorkbook.Path}\\1.xlsx;Extended Properties='Excel 12.0;HDR=Yes';`
let sql="select * from [Sheet1$]"
let x=ActiveSheet.QueryTables.Add(connstr,Range("A1"),sql)
x.Refresh()
console.log(1)
}
function getexcel_odbc(){
let connstr="ODBC;Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=C:\\n\\1.xlsx;"
let sql="select role_id from [Sheet1$]"
let x=ActiveSheet.QueryTables.Add(connstr,Range("A1"),sql)
x.Refresh()
console.log(1)
}
function getmysql_odbc(){
let connstr="ODBC;Driver={MySQL ODBC 8.0 ANSI Driver};SERVER=127.0.0.1;DATABASE=test;UID=root;PWD=root;PORT=3306;"
let sql="select * from test"
let x=ActiveSheet.QueryTables.Add(connstr,Range("A1"),sql)
x.Refresh()
console.log(1)
}
funciton getDuckDB_odbc(){
//64位WPS
let connstr="ODBC;Driver={DuckDB Driver};Database=:memory:" //这里使用内存库,也可以指定其他库
let connstr="ODBC;Driver={DuckDB Driver}"
let sql="from read_csv('c:/db/sale/**/*.csv',encoding='gb18030',filename=true)"
let d=ActiveSheet.QueryTables.Add(connstr,ActiveSheet.Range("a1"),sql)
d.Refresh()
console.log(1)
}