js读取并解析excel文件,之后上传json到服务器

首先,只能在ie浏览器下使用才可以,因为要调用excel控件,别的浏览器不行;

其次,要对浏览器进行安全设置的更改:

internet选项-安全-自定义安全级别-将文件上载到服务器时包含本地目录路径(启用)

internet选项-安全-自定义安全级别-对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本(启用)

html页面:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> New Document </title>
  <meta name="Generator" content="EditPlus"/>
  <meta name="Author" content=""/>
  <meta name="Keywords" content=""/>
  <meta name="Description" content=""/>
  <script src="Scripts/jquery-1.12.2.js" type="text/javascript"></script>

  <script type="text/javascript">
        var tempStr="";

        function ReadExcel() {
         tempStr = "";
          //得到文件路径的值
         var filePath = document.getElementById("upfile").value;
          //创建操作EXCEL应用程序的实例
          var oXL = new ActiveXObject("Excel.application");
          //打开指定路径的excel文件
          var oWB = oXL.Workbooks.open(filePath);
          //操作第一个sheet(从一开始,而非零)
          oWB.worksheets(1).select();
          var oSheet = oWB.ActiveSheet;
          //使用的行数
         var rows = oSheet.usedrange.rows.count;
         var columns = oSheet.usedrange.columns.count;

         tempStr += '{"rows":[';
         try{
             for (var i = 0; i < rows; i++) {
                 tempStr += '[';
                 for (var j = 0; j < columns; j++) {
                     tempStr += '"';
                     if ((oSheet.Cells(i + 1, j + 1) + "") != "undefined") {
                         tempStr += (oSheet.Cells(i + 1, j + 1)+"");
                     } else {
                        tempStr += ("{-}");
                    }
                    tempStr += '"';
                    if (columns != (j + 1)) {
                        tempStr += ',';
                    }
                }
                if (rows != i + 1) tempStr += '],';
                else tempStr += ']';
            }
            tempStr += ']}';
          }catch(e)
          {
              document.getElementById("txtArea").value = tempStr;
          }

          document.getElementById("txtArea").value = tempStr;
          //退出操作excel的实例对象
          oXL.Application.Quit();
          //手动调用垃圾收集器
          CollectGarbage();
     }

     function uploadJson() {
         $.post("UploadPost.aspx", {jsonstr:tempStr}, function (data, status) {alert("Data:"+data+"\nStatus:"+status) });
      }
  </script>
 </head>

 <body>
  <input type="file" id="upfile"/><input type="button" onclick="ReadExcel();" value="read"/><input type="button" value="uploadJson" onclick="uploadJson()"/>
<br/>
<textarea id="txtArea" cols="100" rows="50"></textarea>
 </body>
</html>

上传到服务器:

UploadPost.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

public partial class UploadPost : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string str = Request.Form["jsonstr"];

        string str2 = "";

        JObject jo = (JObject)JsonConvert.DeserializeObject(str);

        for (int i = 0; i < jo["rows"].Count(); i++)
        {
            for (int j = 0; j < jo["rows"][i].Count(); j++)
            {
                str2 += jo["rows"][i][j];
                str2 += " ";
            }
            str2 += "\n";
        }

        Response.Clear();
        Response.ContentType = "text/plain";
        Response.Write(str2);
        Response.End();
    }
}
时间: 2024-08-27 20:19:12

js读取并解析excel文件,之后上传json到服务器的相关文章

nodeJs学习-08 multer中间件,解析post文件,上传文件

const express=require('express'); const bodyParser=require('body-parser'); const multer=require('multer'); const fs=require('fs'); const pathLib=require('path'); var objMulter=multer({dest: './www/upload/'}); //multer 解析post文件 multipart/form-data var

[Python]处理windows下多级目录文件,上传到Linux服务器

#-*- coding: utf-8 -*- __author__ = 'tsbc' import sys reload(sys) sys.setdefaultencoding('utf-8') import paramiko import os import time class Upload(): """ 上传每天生成的测试报告到Linux的web服务器. paramiko 包需要安装 /result/ 下存放html文件 /result/image 截图文件 "

服务器基于PHP CodeIgniter,Android基于Volley实现多文件/图片上传(含服务器,web版和android客户端完整代码)

问题背景:app在上传图片时,同时传递参数,支持传递多个图片.本文中的环境默认已经配好了服务器的CodeIgniter框架.事实上不使用这个框架也是可以的. 一,服务器部分 1,在controllers下的helpers新建文件upload_helper.php <?php /** * Make multifile array input complaint with CI_Upload.<br> * For use files[ ] input name you must use it

结合项目(Spring+(基于注解的)SpringMVC和Mybatis+uploadify文件上传)--poi解析Excel文件

poi解析Excel文件 1.上传文件至服务器 2.解析Excel文件并返回数据集合 3.将数据保存到服务器 框架======Spring+(基于注解的)SpringMVC和Mybatis===== 第一步: 前台: jsp文件采用的是uploadify <div id="fileQueue"></div> <input type="file" id="brandFile"> js: <script ty

js文件夹上传

文件夹上传:从前端到后端 文件上传是 Web 开发肯定会碰到的问题,而文件夹上传则更加难缠.网上关于文件夹上传的资料多集中在前端,缺少对于后端的关注,然后讲某个后端框架文件上传的文章又不会涉及文件夹.今天研究了一下这个问题,在此记录. 先说两个问题: 是否所有后端框架都支持文件夹上传? 是否所有浏览器都支持文件夹上传? 第一个问题:YES,第二个问题:NO 只要后端框架对于表单的支持是完整的,那么必然支持文件夹上传.至于浏览器,截至目前,只有 Chrome 支持. 如果需要其它的浏览器支持则需要

Django文件的上传和数据显示

前言 最近在做基于机器学习的预测系统,里面需要用到excel表格的上传和显示,在这把过程记录一下 Excel文件的上传 在页面中加入form表单 <form method="POST" action="/index/" enctype="multipart/form-data"> {% csrf_token %} <input class="form-control-file" type="file

文件的基本操作二与文件的上传和下载 (45)

访问远程文件 ??如果需要访问远程文件,必须在PHP的配置文件中激活“allow_url_fopen”选项,才能使用fopen( )函数打开运程文件.而且还要确定其他服务器中的文件是否访问权限,如果使用PHP协议对远程文件进行链接,只能以“只读”模式打开.如果需要访问的远程FTP服务器中,对所提供的用户开启了“可写”权限,则使用FTP协议链接远程的文件时,就可以使用“只写”或“只读”模式打开文件.但不可以使用“可读可写”的模式.??使用PHP访问远程文件就像访问本地文件一样,都是使用相同的读写函

JS-XLS/X读取和解析Excel表格文件(xls/xlsx)的JavaScript插件

最近有一个要求,我的一个项目中解析Excel文件(与xls/xlsx扩展)在浏览器(使用JavaScript当然).所以我在网上看了一下,发现了这2个有用的库: js-xls js-xlsx 让我们看看他们是如何工作的. 兼容性 支持读取文件格式 Excel 2007+ XML Formats (XLSX/XLSM) Excel 2007+ Binary Format (XLSB) Excel 2003-2004 XML Format (XML "SpreadsheetML") Exc

Java通过jxl解析Excel文件入库,及日期格式处理方式 (附源代码)

JAVA可以利用jxl简单快速的读取文件的内容,但是由于版本限制,只能读取97-03  xls格式的Excel. 本文是项目中用到的一个实例,先通过上传xls文件(包含日期),再通过jxl进行读取上传的xls文件(文件格式见下user.xls),解析不为空的行与列,写入数据库. 文件user.xls格式为: 下面来看代码实例演示: 一.前端jsp页面(本来内容很多,这里精简了) <%@ page language="java" contentType="text/htm