HTML读取Excel表内容的js插件


读取Excel显示到HTML页面上,可以实现上传Excel数据到数据库里的功能
资源截图
代码片段和文件信息
/* xlsx.js (C) 2013-present  SheetJS -- http://sheetjs.com */
#include 
#include 
#include 
#include “duktape.h“

#define FAIL_LOAD { 
duk_push_undefined(ctx); 
perror(“Error in load_file“); 
return 1; 
}

static char *read_file(const char *filename size_t *sz) {
FILE *f = fopen(filename “rb“);
if(!f) return NULL;
long fsize; { fseek(f 0 SEEK_END); fsize = ftell(f); fseek(f 0 SEEK_SET); }
char *buf = (char *)malloc(fsize * sizeof(char));
*sz = fread((void *) buf 1 fsize f);
fclose(f);
return buf;
}

static duk_int_t eval_file(duk_context *ctx const char *filename) {
size_t len; char *buf = read_file(filename &len);
if(!buf) FAIL_LOAD

duk_push_lstring(ctx (const char *)buf (duk_size_t)len);
duk_int_t retval = duk_peval(ctx);
duk_pop(ctx);
return retval;
}

static duk_int_t load_file(duk_context *ctx const char *filename const char *var) {
size_t len; char *buf = read_file(filename &len);
if(!buf) FAIL_LOAD

duk_push_external_buffer(ctx);
duk_config_buffer(ctx -1 buf len);
duk_put_global_string(ctx var);
return 0;
}

static duk_int_t save_file(duk_context *ctx const char *filename const char *var) {
duk_get_global_string(ctx var);
duk_size_t sz;
char *buf = (char *)duk_get_buffer_data(ctx -1 &sz);

if(!buf) return 1;
FILE *f = fopen(filename “wb“); fwrite(buf 1 sz f); fclose(f);
return 0;
}

#define FAIL(cmd) { 
printf(“error in %s: %s
“ cmd duk_safe_to_string(ctx -1)); 
duk_destroy_heap(ctx); 
return res; 
}

#define DOIT(cmd) duk_eval_string_noresult(ctx cmd);
int main(int argc char *argv[]) {
duk_int_t res = 0;

/* initialize */
duk_context *ctx = duk_create_heap_default();
/* duktape does not expose a standard “global“ by default */
DOIT(“var global = (function(){ return this; }).call(null);“);

/* load library */
res = eval_file(ctx “shim.min.js“);
if(res != 0) FAIL(“shim load“)
res = eval_file(ctx “xlsx.full.min.js“);
if(res != 0) FAIL(“library load“)

/* get version string */
duk_eval_string(ctx “XLSX.version“);
printf(“SheetJS library version %s
“ duk_get_string(ctx -1));
duk_pop(ctx);

/* read file */
res = load_file(ctx argv[1] “buf“);
if(res != 0) FAIL(“file load“)
printf(“Loaded file %s
“ argv[1]);

/* parse workbook */
DOIT(“wb = XLSX.read(buf {type:‘buffer‘ cellNF:true});“);
DOIT(“ws = wb.Sheets[wb.SheetNames[0]]“);

/* print CSV */
duk_eval_string(ctx “XLSX.utils.sheet_to_csv(ws)“);
printf(“%s
“ duk_get_string(ctx -1));
duk_pop(ctx);

/* change cell A1 to 3 */
DOIT(“ws[‘A1‘].v = 3; delete ws[‘A1‘].w;“);

/* write file */
#define WRITE_TYPE(BOOKTYPE) 
DOIT(“newbuf = (XLSX.write(wb {type:‘array‘ bookType:‘“ BOOKTYPE “‘}));“);
res = save_file(ctx “sheetjsw.“ BOOKTYPE “newbuf“);
if(res != 0) FAIL(“save sheetjsw.“ BOOKTYPE)

WRITE_TYPE(“xlsb“)
WRITE_TYPE(“xlsx“)
WRITE_TYPE(“xls“)
WRITE_TYPE(“csv“)

/* cleanup */
duk_destroy_heap(ctx);
return res;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-05-15 19:49  js-xlsx-master
     文件         518  2019-05-15 19:49  js-xlsx-master.eslintrc
     文件         501  2019-05-15 19:49  js-xlsx-master.flowconfig
     文件         116  2019-05-15 19:49  js-xlsx-master.fossaignore
     文件         315  2019-05-15 19:49  js-xlsx-master.gitattributes
     文件         464  2019-05-15 19:49  js-xlsx-master.gitignore
     文件          89  2019-05-15 19:49  js-xlsx-master.gitmodules
     文件         114  2019-05-15 19:49  js-xlsx-master.jscs.json
     文件          39  2019-05-15 19:49  js-xlsx-master.jshintrc
     文件         693  2019-05-15 19:49  js-xlsx-master.npmignore
     文件        1512  2019-05-15 19:49  js-xlsx-master.spelling
     文件        1363  2019-05-15 19:49  js-xlsx-master.travis.yml
     文件        2897  2019-05-15 19:49  js-xlsx-masterCHANGELOG.md
     文件        2304  2019-05-15 19:49  js-xlsx-masterCONTRIBUTING.md
     文件       11356  2019-05-15 19:49  js-xlsx-masterLICENSE
     文件        7663  2019-05-15 19:49  js-xlsx-masterMakefile
     文件      109723  2019-05-15 19:49  js-xlsx-masterREADME.md
     目录           0  2019-05-15 19:49  js-xlsx-masterin
     文件        9893  2019-05-15 19:49  js-xlsx-masterinxlsx.njs
     目录           0  2019-05-15 19:49  js-xlsx-masterits
     文件           5  2019-05-15 19:49  js-xlsx-masterits.npmignore
     文件         246  2019-05-15 19:49  js-xlsx-masterits0_header.js
     文件          25  2019-05-15 19:49  js-xlsx-masterits1_version.js
     文件        3169  2019-05-15 19:49  js-xlsx-masterits2_codepage.js
     文件          37  2019-05-15 19:49  js-xlsx-masterits3_consts.js
     文件        1317  2019-05-15 19:49  js-xlsx-masterits4_base64.js
     文件        2255  2019-05-15 19:49  js-xlsx-masterits5_buf.js
     文件         457  2019-05-15 19:49  js-xlsx-masterits9_types.js
     文件       36841  2019-05-15 19:49  js-xlsx-masterits10_ssf.js
     文件        3268  2019-05-15 19:49  js-xlsx-masterits11_ssfutils.js
     文件       49030  2019-05-15 19:49  js-xlsx-masterits18_cfb.js
............此处省略505个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)