0

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

这是当前脚本: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.) 如何在单独的页面上返回输出?

4

2 回答 2

1

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

于 2012-09-28T20:47:43.453 回答
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 文件的内容。现在您可以使用某种“echo”机制将其发送到服务器,或者使用“Downloadify”允许用户下载它。或者,如果您想实际阅读并在页面上显示它,您可以......它只是涉及更多。

像这样打包 zip 文件:

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

作为一个无耻的插件,我从我一直在从事的项目中发现了这一切 - http://excelbuilderjs.com/

于 2012-09-29T09:33:26.590 回答