如何在Javascript中上传excel文件或将excel转换为文本文件?

问题描述 投票:0回答:2

我一直在处理文本文件的上传页面,现在我也想上传excel文件。我当前的代码给了我奇怪的输出。我认为有些问题是因为我的函数是为文本文件构建的,现在我必须修改一些内容来读取excel文件。这是我的文件阅读器代码:

function fileSubmit(){
    var fileExist = $('#fileUpload')[0];
    var fileName = $('#fileUpload').val().split('\\').pop();

    if(fileName && fileExist){
        var reader = new FileReader();
        var file = fileExist.files[0];

        reader.onload = function(e) {
            var text = reader.result.split(/\r\n|\n/);                 
            var columnNames = text.shift().split('\t'); 
            alert(columnNames); 
        }
        reader.readAsText(file, 'UTF-8');
    }
}

我的警报输出如下所示:

PK!b�h^�[Content_Types].xml �(����N�0E�H�C�-Jܲ@5��*Q>�ēƪc[�ii����B�j7���{2��h�nm���ƻR����U^7/���%��rZY�@1__�f��q��R4D�AJ�h>����V�ƹ�Z�9����NV�8ʩ����ji){^��-

我想输出我的列名,因为我必须对文件中的每一行进行验证。什么是让.xsl.xsls文件工作的最佳方法?我在xls和xlxs javascript库中找到了很多例子,但是当我试图实现很多原因时,它们都没有用。我想知道在所有浏览器中是否支持任何内容,或者这是不应该在JavaScript中完成的事情?谢谢。

javascript jquery excel file-upload
2个回答
1
投票

xlsx是内部xml文件,它们是一组文件,它们组合在一起作为xlsx。要用zip打开它,你可以更好地查看xlsx文件的构成。

Xlsx内部是[用ZIP打开]

_

rels
docProps
xl
[content_types].xml

所以这些文件内部工作依赖于关系。将xlsx文件作为文本文件读取绝不是一个好习惯。您可以使用Apache poi库读取其他方法。试试吧。谢谢......


0
投票

您可以使用XMLHttpRequest和FormData上传文件,

$('#input-file').change(function() {

      var url = '/back-end-url';
      var form_data = new FormData();
      var xhr = new XMLHttpRequest();

      $.each(this.files, function (key, value) {
          form_data.append('file', value)
      })

      xhr.open('POST', url, true)
      xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest")
      xhr.send(form_data)

      xhr.onreadystatechange(function() {
          if(xhr.readyState == XMLHttpRequest.DONE) {
               var res = JSON.parse(xhr.responseText)
          }
      })

})

您可以在后端获取和处理该文件。

© www.soinside.com 2019 - 2024. All rights reserved.