如今很多译者从客户那里接到的待译文件格式都五花八门,如果客户给一个Word文档那就已经谢天谢地了,这样的客户绝对能评上“年度甲方爸爸”。可要是遇上这样的情况:客户提供的都是Excel表格,尤其是那种ShitSheet特别多内容又特别多的Excel表格,那么光统计要翻译的文本的字数就够译者喝一壶的。
所以在今天的这篇帖子中,我就准备仔细说一下如何统计Excel表格中指定部分的字数
正文
首先,我先给大家介绍一下我准备使用的演示材料和程序开发需求。
我做了一个演示用的Excel表格,如下:
我一共建了三个表,分别是:表一、表二和表三。每个表中都有三列,分别是:ID、原文和译文。
我们要翻译的是原文,要把译文填充在“译文”列
我希望通过一段程序一次性统计三个表中的“原文”一列的所有中文的字数
实现方法
第一步:设置好编程环境,并将演示文件存入指定的文件夹中
我所使用的本地编程环境是XAMPP,即将使用的编程语言是PHP。(在我之前的微信公众号文章中可以查看该工具的使用方法)
我将刚刚创建的演示文件存入指定的文件夹中,
第二步:安装一个名为“PHPExcel”的PHP插件
地址:https://github.com/PHPOffice/PHPExcel
安装方法:从上述地址下载名为“Classes”的文件夹,并将其存储在本地编程环境指定文件夹的根目录中,在这里我存储在“excel”文件夹中
第三步:在根目录中创建一个“index.php”文件,用来撰写代码处理“files”文件夹中的演示文件。
第四步:打开“index.php”开始撰写代码
1、引入PHPExcel插件
第四行和第五行的作用是从“files”文件夹中读取名为“Test.xlsx”的演示文件,并将其放在一个名为“$excel”的变量中。
我们统计Excel表格中的指定内容时,实际上就是在处理这个叫“$excel”的变量。
2、读取Excel表格数据
那么我们接下来就去读取Excel表里的数据:
新增的代码中,实际上有两部分内容:
上图第“9”行的代码中的“getSheetCount()”函数用于统计Excel表格中有多少个工作表,并且把统计结果放在“$sheetCount”变量中。
上图的第“11-15”行代码用户遍历每一个工作表,并且把工作表中所有的结果以数组的形式存储在“$data”变量中。
上面代码运行后的结果为:
到了这一步,我们已经把Excel表中所有工作表的内容都读取出来了,我们接下来要做的就是把所有表中第二列“原文”单独显示出。
我们先仔细看看上面这些数据是怎么生成的?
我们的演示材料里头有三个表,这个“3”被赋到了“$sheetCount”变量中。
下面展示的是一个循环功能:
for($i=0; $i<$sheetCount; $i++){
echo $i;
}
可以这样解释:
我们新建一个叫“$i”的变量,这个变量的初始值为“0”($i=0;);它的值不能大于“$sheetCount”,也就是小于“3”($i<$sheetCount;);每当中括号“{}”中的程序执行完一次后,“$i”的值再加一个“1”($i++; “++”在这里是“自加1”的意思)。
而“echo $i;”的功能就是打印“$i”的值。
所以,上面这段简单的循环功能执行后的结果就是:“012”,因为当“$i=3”的时候,“$i”就已经大于“$sheetCount”了,就不会再执行中括号里的结果了。
理解了这段代码的功能,我们再去理解我前面写的那段代码:
for($i=0; $i<$sheetCount; $i++){
$data = $excel->getSheet($i)->toArray();
echo ‘<pre>’;
print_r($data);
}
当“$i=0”时,我们新建的这个叫“$data”的变量的值为:$excel->getSheet(0)->toArray()
“$excel”这个变量前面已经介绍了,里面装的是整个Excel表格
“getSheet(0)”的功能是获取Excel表格的第一个工作表(Sheet),大家会很奇怪,为什么第一个工作表对应的序号是“0”,我就不给大家展开讲了,简单来说就是,程序员在数数时都是从“0”开始数的。
“toArray()”的功能就是将第一个工作表的内容变成一个数组(Array),如下:
Array ( [0] => Array ( [0] => ID [1] => 原文 [2] => 译文 ) [1] => Array ( [0] => 1 [1] => 翻译 [2] => ) [2] => Array ( [0] => 2 [1] => 编程 [2] => ) [3] => Array ( [0] => 3 [1] => 文字 [2] => ) [4] => Array ( [0] => 4 [1] => 代码 [2] => ) [5] => Array ( [0] => 5 [1] => 码农 [2] => ) )
这个工作表原本是什么样的呢
转载请注明:XAMPP中文组官网 » 如何统计Excel表格中指定部分的字数?