用php读取excel数据~~ 我要用php读取门禁系统导出的excel~关于签到时间的数据~~然后拼成sql~再插入到数据库中~~为什么用excel里的时间字段~写到sql里就会报错~~遇到中文也会报错~~怎么能让字符串统一~~~谢谢拉~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 理论上以PHP 调用 VBA接口应该可以完成你要求,具体没有实现过。 你可以查查 Excel 相关资料。 你用一下excel_class.php类导出看一下,下面是导出的代码,excel_class.php你到http://download.csdn.net/source/1487342下载,<? require "excel_class.php"; Read_Excel_File("Book1.xls",$return); for ($i=0;$i<count($return[Sheet1]);$i++) { $login=GetGB2312String($return[Sheet1][$i][1]); $name=GetGB2312String($return[Sheet1][$i][0]); ...}function GetGB2312String($name) { $tostr = ""; for($i=0;$i<strlen($name);$i++) { $curbin = ord(substr($name,$i,1)); if($curbin < 0x80) { $tostr .= substr($name,$i,1); }elseif($curbin < bindec("11000000")){ $str = substr($name,$i,1); $tostr .= "&#".ord($str).";"; }elseif($curbin < bindec("11100000")){ $str = substr($name,$i,2); $tostr .= "&#".GetUnicodeChar($str).";"; $i += 1; }elseif($curbin < bindec("11110000")){ $str = substr($name,$i,3); $gstr= iconv("UTF-8","GB2312",$str); if(!$gstr) { $tostr .= "&#".GetUnicodeChar($str).";"; }else{ $tostr .= $gstr; } $i += 2; }elseif($curbin < bindec("11111000")){ $str = substr($name,$i,4); $tostr .= "&#".GetUnicodeChar($str).";"; $i += 3; }elseif($curbin < bindec("11111100")){ $str = substr($name,$i,5); $tostr .= "&#".GetUnicodeChar($str).";"; $i += 4; }else{ $str = substr($name,$i,6); $tostr .= "&#".GetUnicodeChar($str).";"; $i += 5; } } return $tostr; } function GetUnicodeChar($str) { $temp = ""; for($i=0;$i<strlen($str);$i++) { $x = decbin(ord(substr($str,$i,1))); if($i == 0) { $s = strlen($str)+1; $temp .= substr($x,$s,8-$s); }else{ $temp .= substr($x,2,6); } } return bindec($temp); }?> 我还真就是用的excel_class.php这个~~但就是从excel导出的时间~~拼成sql ~~mysql_query不能执行~~但是在phpadmin里直接用sql也没有问题~ 我的那个excel_class.php类是改过的,你下来试一下,之前我也是和你出现的情况一样的 有个phpExcelReader很好用,google一下吧 啊~~你不是也是下载的吗~~~你的excel_class.php在哪的啊? http://download.csdn.net/source/1487342我的也是下载的,但我下载后对里面的一些编码转换进行了修改了,你下后再综合我上面给的代码试一下看行不行 不行啊~~时间格式还是不对~不执行sql~~我现在主要针对时间拼成sql~~~是不是从excel导出的时间就不对啊~~ 门禁系统一般都能导出CSV格式, 为什么不用? 有可能,估计你要导出时间要进行处理一下,还有,你导出后用echo将时间的变量打印出来看他的格式是怎样的, 可能是字符集问题,sql语句在phpmyadmin可以执行,而通过mysql_query(sql)报错的话,可能是连接字符集设置有错,总共好像有四个字符集。 导出时间的时候字段前加个'符号,把时间完全导出 不用excel进行转换格式 这样试试看。 人人网好友定位 菜鸟:当IE浏览器改变大小时,浮动视频位置不变?? 唠叨又排到第二了,大家加油投票阿 求正则表达式或者PHP函数执行方式 php判断语句 如何上传数据库?? 筛选,很简单的问题 我的session在两个IE窗口中公用 高手请进:PHP 程序完成向一需要用户登录的网站发布信息的功能 提交后为什么苹果手机检测不到有文件上传,安卓的可以 求个SQL语句 swfupload上传后的文件传哪里去了,请高手指点
你可以查查 Excel 相关资料。
<?
require "excel_class.php";
Read_Excel_File("Book1.xls",$return);
for ($i=0;$i<count($return[Sheet1]);$i++)
{
$login=GetGB2312String($return[Sheet1][$i][1]);
$name=GetGB2312String($return[Sheet1][$i][0]);
...
}
function GetGB2312String($name)
{
$tostr = "";
for($i=0;$i<strlen($name);$i++)
{
$curbin = ord(substr($name,$i,1));
if($curbin < 0x80)
{
$tostr .= substr($name,$i,1);
}elseif($curbin < bindec("11000000")){
$str = substr($name,$i,1);
$tostr .= "&#".ord($str).";";
}elseif($curbin < bindec("11100000")){
$str = substr($name,$i,2);
$tostr .= "&#".GetUnicodeChar($str).";";
$i += 1;
}elseif($curbin < bindec("11110000")){
$str = substr($name,$i,3);
$gstr= iconv("UTF-8","GB2312",$str);
if(!$gstr)
{
$tostr .= "&#".GetUnicodeChar($str).";";
}else{
$tostr .= $gstr;
}
$i += 2;
}elseif($curbin < bindec("11111000")){
$str = substr($name,$i,4);
$tostr .= "&#".GetUnicodeChar($str).";";
$i += 3;
}elseif($curbin < bindec("11111100")){
$str = substr($name,$i,5);
$tostr .= "&#".GetUnicodeChar($str).";";
$i += 4;
}else{
$str = substr($name,$i,6);
$tostr .= "&#".GetUnicodeChar($str).";";
$i += 5;
}
}
return $tostr;
}
function GetUnicodeChar($str)
{
$temp = "";
for($i=0;$i<strlen($str);$i++)
{
$x = decbin(ord(substr($str,$i,1)));
if($i == 0)
{
$s = strlen($str)+1;
$temp .= substr($x,$s,8-$s);
}else{
$temp .= substr($x,2,6);
}
}
return bindec($temp);
}
?>
你的excel_class.php在哪的啊?