javascript导入excel文件(IE浏览器)

news/2024/7/21 4:27:53 标签: javascript, excel, ActiveXObject

  由于使用了插件ActiveXObject,而这个插件只是IE提供的,因此以下所有代码都只能在IE中执行

方法一:

  可以导入xls、xlsx文件。
  固定导入文件的列数。

<!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 type="text/javascript">javascript">
    function ReadExcel() {
     var 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;
           //读取每格的值,注意是从1开始
           try {
            for (var i = 1; i <= rows; i++) {
             if (oSheet.Cells(i, 1).value == "null" || oSheet.Cells(i, 2).value == "null")
              break;
            var a = oSheet.Cells(i, 1).value.toString() == "undefined" ? "": oSheet.Cells(i, 1).value;
            tempStr += (" " + oSheet.Cells(i, 1).value + " " + oSheet.Cells(i, 2).value + " " + oSheet.Cells(i, 3).value + "\n");
          }
        }
        catch(e) {
          document.getElementById("txtArea").value = tempStr;
        }
        document.getElementById("txtArea").value = tempStr;
           //退出操作excel的实例对象
           oXL.Application.Quit();
           //手动调用垃圾收集器
           CollectGarbage();
          }
  </script>
 </head>

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

方法二:

  可以导入xls、xlsx文件。
  直接读取文件所有内容,还可以读取多个sheet。

<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<head>
<title>Untitled Page</title>
</head>
<script language="javascript" type="text/javascript">javascript">
function toWeb(fileName) {
    rstArray = importXLS(fileName);
    rstArrayUnique = rstUnique(rstArray);//删除重复行
}

function importXLS(fileName) {
    var excelCon;
    excelCon = new ActiveXObject("ADODB.Connection");
    excelCon.Provider = "Microsoft.Jet.OLEDB.4.0; Persist Security Info = False;";
    excelCon.ConnectionString = "Data Source=" + fileName + ";Extended Properties='Excel 8.0; HDR=NO;IMEX=2'" ;
    excelCon.CursorLocation = 1;//adUseNoe
    excelCon.Open;
    var strQueryExcel;
    //var strSheetName = "Sheet2$";
    var rsTemp = new ActiveXObject("ADODB.Recordset");//hold a set of records from a database table
    rsTemp = excelCon.OpenSchema(20);//return Recordset
	var rst = new Array();
    var strTable;
    while (!rsTemp.EOF)//end of file
    {
        if (rsTemp("TABLE_TYPE") == "TABLE") {
            rsExcel = new ActiveXObject("ADODB.Recordset");
            strQueryExcel = "SELECT * FROM [" + rsTemp("TABLE_NAME") + "]";
            rsExcel.ActiveConnection = excelCon;
            rsExcel.Open(strQueryExcel);
            strTable=rsTemp("TABLE_NAME")+"表内容<br><table id='excelTable' border='1' cellspacing='0' cellpadding='0'>";//style='VISIBILITY:hidden'
            for (i = 0; i < rsExcel.Fields.Count;i++) {
                strTable = strTable+"<td>" + rsExcel.Fields(i).name + "</td>";
            }
            do {
                strTable = strTable + "<tr>";
                var rst_i = new Array();
                for(i = 3; i < rsExcel.Fields.Count; i++) {
                    strTable=strTable + "<td>" + rsExcel.Fields(i).value + "</td>";
                    rst_i.push(rsExcel.Fields(i).value);
                }

                strTable=strTable + "</tr>";
                rst.push(rst_i);
                rsExcel.MoveNext;
            }while(!rsExcel.EOF);

        }
        document.write(strTable + "</table><br>")
        rsExcel = null;
        rsTemp.MoveNext;
    }
    excelCon.Close;
    excelCon = null;
    rsExcel = null;
    return rst;
}

function rstUnique(arr) {
    var result = [], hash = {};
    for (var i = 0, elem; (elem = arr[i]) != null; i++) {
        if (!hash[elem]) {
            result.push(elem);
            hash[elem] = true;
        }
    }
    return result;
}

</script>
<body>
<input type="file" id="file_open" />
<input type="button" id="button_file_open" value="import_file" onClick="if(file_open.value=='')alert('请选择xls文件');else toWeb(file_open.value)" />
</body>
</html>

  这个方法在表头会出现F1/F2/F3等,如果不想要,可以看这篇文章 javascript将EXCEL文件导入前端第一行未出现或者出现F1F2F3的解决方法……

下载完整代码learning-everything/javascript/readExcel_IE


http://www.niftyadmin.cn/n/517402.html

相关文章

把软件添加到文件/文件夹的右键菜单、为文件和文件夹添加复制路径的右键菜单

1 添加软件到文件的右键菜单&#xff0c;如sublime、webstorm 1、winR打开运行框 2、输入regedit打开注册表 3、按路径Computer\HKEY_CLASSES_ROOT\*\shell在左侧依次打开&#xff08;Computer也可能叫计算机&#xff09;&#xff0c;也可复制这个路径到注册表中则直接定位到该…

CSS3 Animation Cheat Sheet:实用的 CSS3 动画库

CSS3 Animation Cheat Sheet 是一组预设的动画库&#xff0c;为您的 Web 项目添加各种很炫的动画。所有你需要做的是添加样式表到你的网站&#xff0c;为你想要添加动画效果的元素应用预制的 CSS 类就可以了。 您可能感兴趣的相关文章特别推荐&#xff1a;35款精致的 CSS3 和 H…

C++:#include和using namespace

首先要明确的是&#xff1a;在C中&#xff0c;没有namespace。   在C中&#xff0c;既有#include&#xff0c;又有using namespace。前者通常定义在.h文件中&#xff0c;后者直接写在.cpp文件中。#include用于添加文件到project中&#xff0c;而namespace使对象在逻辑模块中。…

Python程序的性能分析指南(转)

原文地址 &#xff1a;http://blog.jobbole.com/47619/ 虽然不是所有的Python程序都需要严格的性能分析&#xff0c;不过知道如何利用Python生态圈里的工具来分析性能&#xff0c;也是不错的。 分析一个程序的性能&#xff0c;总结下来就是要回答4个问题&#xff1a; 它运行的有…

OSG学习:新建C++/CLI工程并读取模型(C++/CLI)——根据OSG官方示例代码初步理解其方法

C/CLI-OSG示例代码&#xff1a;两部分要同时下载&#xff0c;然后一起解压。 part1&#xff1a;C/CLI-OSGDemo&#xff08;1&#xff09; part2&#xff1a;C/CLI-OSGDemo&#xff08;2&#xff09; 对上面的例子进行分步解析&#xff1a; 一、创建工程并设置界面 1、创建C/…

NYOJ 764 Uva 11552 FEWEST FLOPS (三维DP)

1 //dp[i][j][k]表示第i组以字母(aj)开头,以字母(ak)结尾,最多能组合成多少对2 //a[i][j]表示第i组中有哪些字母,a[i][j]为1表示有字母(aj);3 //c[i]表示第i组中不同字母的个数4 //Max[i]表示第i组dp[i][j][k]最大的值5 //最后结果便为sum(c[i(0, len-1)]) - Max[len-1]; (len为…

OSG学习:OSG组成(一)——组成模块

以下内容来自&#xff1a; 1、《OpenSceneGraph三维渲染引擎编程指南》肖鹏 刘更代 徐明亮 清华大学出版社 2、《OpenSceneGraph3.0三维视景仿真技术开发详解》国防工业出版社 3、自己的总结 OSG工具 一系列直接查看osg相关模型和信息的工具。以下所有语句都是在配置好环境…

单高斯背景建模

算法原理 Opencv实现 /*******************单高斯背景建模v1.0************************* ************************2010.01.22****************************/#include <highgui.h> #include <cv.h> #include <math.h> #include <stdio.h> #include &l…