资源简介
非常不错的前端JS直接读取 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\n“ 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\n“ 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\n“ 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\n“ 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 2018-11-13 20:25 js-xlsx-master\
文件 518 2018-11-13 20:25 js-xlsx-master\.eslintrc
文件 501 2018-11-13 20:25 js-xlsx-master\.flowconfig
文件 116 2018-11-13 20:25 js-xlsx-master\.fossaignore
文件 315 2018-11-13 20:25 js-xlsx-master\.gitattributes
文件 464 2018-11-13 20:25 js-xlsx-master\.gitignore
文件 89 2018-11-13 20:25 js-xlsx-master\.gitmodules
文件 114 2018-11-13 20:25 js-xlsx-master\.jscs.json
文件 39 2018-11-13 20:25 js-xlsx-master\.jshintrc
文件 693 2018-11-13 20:25 js-xlsx-master\.npmignore
文件 1512 2018-11-13 20:25 js-xlsx-master\.spelling
文件 1363 2018-11-13 20:25 js-xlsx-master\.travis.yml
文件 2897 2018-11-13 20:25 js-xlsx-master\CHANGELOG.md
文件 2304 2018-11-13 20:25 js-xlsx-master\CONTRIBUTING.md
文件 11356 2018-11-13 20:25 js-xlsx-master\LICENSE
文件 7663 2018-11-13 20:25 js-xlsx-master\Makefile
文件 110383 2018-11-13 20:25 js-xlsx-master\README.md
目录 0 2018-11-13 20:25 js-xlsx-master\bin\
文件 9893 2018-11-13 20:25 js-xlsx-master\bin\xlsx.njs
目录 0 2018-11-13 20:25 js-xlsx-master\bits\
文件 5 2018-11-13 20:25 js-xlsx-master\bits\.npmignore
文件 246 2018-11-13 20:25 js-xlsx-master\bits\00_header.js
文件 25 2018-11-13 20:25 js-xlsx-master\bits\01_version.js
文件 3169 2018-11-13 20:25 js-xlsx-master\bits\02_codepage.js
文件 37 2018-11-13 20:25 js-xlsx-master\bits\03_consts.js
文件 1317 2018-11-13 20:25 js-xlsx-master\bits\04_ba
文件 2255 2018-11-13 20:25 js-xlsx-master\bits\05_buf.js
文件 457 2018-11-13 20:25 js-xlsx-master\bits\09_types.js
文件 36841 2018-11-13 20:25 js-xlsx-master\bits\10_ssf.js
文件 3268 2018-11-13 20:25 js-xlsx-master\bits\11_ssfutils.js
文件 49030 2018-11-13 20:25 js-xlsx-master\bits\18_cfb.js
............此处省略505个文件信息
相关资源
- DataGridView中实现与EXCEL相互复制粘贴控
- js俄罗斯方块 小游戏源码
- excelApi 和安装工具
- Altium Designer dblib简易制作教程
- ectouch最新版JSAPI微信支付V3插
- jstl-api-1.2和jstl-impl-1.2
- js鼠标经过选项卡
- 先进先出库存管理excel表格.rar
- [免费]强大的OFFICE经验(Word Excel)
- ICD10 excel
-
分别适用于.NET fr
amework 2.0和4.0的E - K码和经纬度转换excel表格
- web js虚拟键盘(中英文切换)
- Php 导出数据为EXCEL程序
- js万能播放器,网页播放插件实例
- js实现动态修改table内容功能
- 项目周报格式(excel格式报表)
- js实现的日历控件(经典好用)
- 学生管理系统的添加、修改、删除、
- 一个基于MFC的GridCtrl,提供类似Excel的
- JS操作本地网页串口源码
- 基于MVC模式的校园BBS系统的设计与实
- EXCEL横转竖(列转行)宏
- Excel高效办公实例
- js实现模态窗口的3种方式
- 湖南省计算机等级二级考试excel题集锦
- 仿126 网易 163 邮箱 界面
- EXCEL文件转换成固定的格式的文本格式
- 全国城市js数组
- 从EXCEL中取数据在Teechart7显示应用示例
川公网安备 51152502000135号
评论
共有 条评论