EXCEL表格中怎样读取中文?

考勤表格,例如:应到时间8:30,应退时间17:00,考勤信息显示实到时间为:8:40,那么怎么在最后考勤结果中读出来“迟到”呢?求高手指点

常用的用php读取excel的方法有以下三种,各自有各自的优缺点。个人推荐用第三种方法,因为它可以跨平台使用。
1.
以.csv格式读取
将.xls转换成.csv的文本格式,然后再用php分析这个文件,和php分析文本没有什么区别。
优点:跨平台,效率比较高、可以读写。
缺点:只能直接使用.csv的文件,如果经常接受.xls二进制文件的话需要手工转换,不能自动化。一个文件只有一个sheet。
php有自带的分析.csv函数:fgetcsv
array
fgetcsv
(
int
$handle
[,
int
$length
[,
string
$delimiter
[,
string
$enclosure]]]
)
handle
一个由
fopen()、popen()

fsockopen()
产生的有效文件指针。
length
(可选)必须大于
cvs
文件内最长的一行。在
php
5
中该参数是可选的。如果忽略(在
php
5.0.4
以后的版本中设为
0)该参数的话,那么长度就没有限制,不过可能会影响执行效率。
delimiter
(可选)设置字段分界符(只允许一个字符),默认值为逗号。
enclosure
(可选)设置字段环绕符(只允许一个字符),默认值为双引号。该参数是在
php
4.3.0
中添加的。

fgets()
类似,只除了
fgetcsv()
解析读入的行并找出
csv
格式的字段然后返回一个包含这些字段的数组。
fgetcsv()
出错时返回
false,包括碰到文件结束时。
注意:
csv
文件中的空行将被返回为一个包含有单个
null
字段的数组,不会被当成错误。
当然也可以自己手动分析字符串
还可以利用fputcsv函数将行格式化为
csv
并写入文件指针。
2.
odbc链接数据源
优点:支持多种格式,cvs,
xls等。支持读写,使用标准sql语言,和sqlserver、mysql数据库几乎完全一样。
缺点:值支持windows服务器
3.
php自定义类
优点:跨平台。某些类支持写操作。支持.xls二进制文件
常用的类有phpexcelreader、phpexcel。其中后者支持读写,但是需要php5.2以上版本。
phpexcelreader是专门用来读取文件的。返回一个数组,包含表格的所有内容。

class
使用的方法可以参考网站下载回来的压缩档中的
example.php。
不过我下载回来的
(版本
2009-03-30),有两点要注意:
reader.php
中的下面这行要修改

require_once
‘spreadsheet/excel/reader/oleread.php’;
改为
require_once
‘oleread.inc’;
example.php

修改
$data->setoutputencoding(’cp1251′);

$data->setoutputencoding(’cp936′);
example2.php

修改
nl2br(htmlentities($data->sheets[$sheet]['cells'][$row][$col]));

$table_output[$sheet]
.=
nl2br(htmlspecialchars($data->sheets[$sheet]['cells'][$row][$col]));
不然中文会有问题。
繁体的话可以修改为cp950、日文是cp932,具体可参考codepage说明。
修改
$data->read(’jxlrwtest.xls’)
为自己的
excel
文件名,zip
档中附的
jxlrwtest.xls
应该是坏了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-07
可以将上下班时间固定在某几个单元格,比如C1为上班时间8:30
=if(a1>c1,"迟到","")
其实从考勤机去的数据,可以做一个更完善的出勤考核表,甚至直接和工资表一体化处理追问

老师指点的明示,感激不尽啊,但是我想读好几个中文词语,比如8:30之前显示正常,9:30之后显示旷工,这个怎么叠加啊?我试了几个不行。
另外请老师您明示怎么和工资表一体化处理?我QQ343855507 邮箱[email protected]

追答

给你做一个样板

标准时间: 8:00 11:30 13:00 17:00 18:30 21:30
旷工 9:00 10:30 14:00 16:00 19:30 20:30
姓名 上午 下午 晚上 考勤
上班 下班 上班 下班 上班 下班 上午 下午 晚上
张三 7:55 10:55 13:00 17:20 18:00 21:20 早退 早退
李四 8:00 11:00 14:00 16:50 18:20 19:50 早退 迟到 旷工
王五 8:05 12:05 13:10 15:55 17:50 20:00 迟到 迟到 旷工
赵六 9:00 11:30 14:20 17:10 19:50 20:55 迟到 旷工 旷工
陈七 9:20 11:40 12:50 18:00 18:40 21:00 旷工 迟到

本回答被提问者和网友采纳
第2个回答  2011-11-07
如果出勤时间是A列,在B列
=IF(A1<=0.35417,"正常上班","迟到")
第3个回答  2011-11-07
假设实到时间在A列,考勤结果显示在B列
B2=IF(A2>TIME(8,30,),"迟到",""),向下填充
第4个回答  2011-11-07
有没有试过调用系统时间,或者只在这个时间段里考勤什么的
相似回答