查找和替换Javascript需要从Excel工作表中提取值,循环并输出

时间:2012-09-28 20:41:23

标签: javascript excel

我有一个脚本替换句子中的多个单词。

这是当前的脚本:
http://jsfiddle.net/2z3b4/

我想更进一步,并能够遍历excel表中的替换单词列表。这句话会改变几个单词,所以理想情况下我需要从多列中提取单词

即。要替换的word1 =列A1      要替换的word2 =列B1

然后它将开始移动到下一列

 word1 to be replaced = column A2
 word2 to be replaced = column B2

在拉取并替换这些值后,我希望它能在页面上返回输出。

a。)如何从excel表中提取值?
b。)如何让excel表循环遍历所有列,然后在完成后停止? c。)如何在单独的页面上返回输出?

2 个答案:

答案 0 :(得分:1)

如果您需要从Excel工作表中获取值,可以考虑使用不同的Javascript语言 - 也许在Excel中使用VBA?

答案 1 :(得分:0)

你可以用javascript实际做到这一点..只要它是excel 2007+文件就不那么难了。只是很多步骤和模棱两可。如果它是2003或更低版本,你可能会有一些问题,因为我不确定任何JS库可以真正帮助阅读二进制文件。无论如何...

获取jszip。这使您可以解压缩Excel 2007+文件(实际上,所有Excel 2007+文件都包含一堆XML文件)

如果你不关心IE,并且你希望你的客户端浏览器是最新的,你可以使用FileReader api(查看http://caniuse.com/#feat=filereader)。如果您关心IE,我确信有一个Flash项目会读取文件的内容并通过externalInterface将其发送到javascript。或者你可以自己装备它。或者也许您可以在iframe中“上传”文件并使用“echo”打印回base64编码文件的内容,然后将其输入jszip。

一旦你能够阅读文件的内容,使用jszip打开文件内容,可能是new JSZip(zipDataBinary, {base64:false});

由于您只是替换文本,因此您很可能只关注sharedStrings.xml文件。

zipFile = new JSZip(zipDataBinary, {base64:false});
var sharedStringFile= zipFile.file(/sharedStrings\.xml/);

现在,轻松自大 -

var newData = sharedStringFile.asText().replace(/* and all the stuff you want replaced, or in a loop, or whatever.. */);

这里需要注意的重要一点是,Excel 2007+文件中的每一个字符串都保存在这个sharedStrings.xml文件中 - 他们做了一些工作来尝试优化excel文件的大小,字符串数据就是一个电子表格中最常复制的数据片段。所以,如果你的单元格A1有“这是一个单元格!”,它实际上表示为

<c r="A1" t="s">
    <v>1</v>
</c>

'1'是sharedStrings.xml文件中字符串的索引。总之..

完成后,

zipFile.file(sharedStringFile.name, newData); 

这将更新zip文件的内容。现在,您可以使用某种“回声”机制将其发送到服务器,或使用“Downloadify”允许用户下载它。或者,如果你想真正阅读它并在页面上显示它,你可以......它只是更多的参与。

将zip文件重新打包起来:

var sendThisDataSomewhere = zipFile.generate({base64: false});

作为一个无耻的插件,我从我一直在研究的项目中找到了所有这些 - http://excelbuilderjs.com/