mysql导入excel表时间错误_excel导入mysql(用PHP-ExcelReader 方法),日期时间出错的处理办法...

益思博
2023-12-01

ExcelReader是个简单易用的东东,相信很多使用PHP的同学们需要从EXCEL中导入数据到数据库时,十有八九都会使用它,因为他实在是简单易用。

PHP-ExcelReader

导入代码:

< ?php

require_once 'reader.php';

// ExcelFile($filename, $encoding);

$data = new Spreadsheet_Excel_Reader();

// Set output Encoding.

$data->setOutputEncoding('gbk');

//”data.xls”是指要导入到mysql中的excel文件

$data->read('data.xls');

@ $db = mysql_connect('localhost', 'root', '123456') or

die("Could not connect to database.");//连接数据库

mysql_query("set names 'gbk'");//输出中文

mysql_select_db('mydb'); //选择数据库

error_reporting(E_ALL ^ E_NOTICE);

for ($i = 1; $i <=

$data->sheets[0]['numRows']; $i++) {

//以下注释的for循环打印excel表数据

//以下代码是将excel表数据【3个字段】插入到mysql中,

根据你的excel表字段的多少,改写以下代码吧!

$sql = "INSERT INTO test VALUES('".

$data->sheets[0]['cells'][$i][1]."','".

$data->sheets[0]['cells'][$i][2]."','".

$data->sheets[0]['cells'][$i][3]."')";

echo $sql.'< br />';

$res = mysql_query($sql);

}

?>

注意1:

修改文件的后缀

拿到下载包中的oleread.inc 、 reader.php这两个文件,其他的文件是申明和应用实例!

打开reader.php文件,在31行阁下

//require_once ""PEAR.php"";

require_once ""Spreadsheet/Excel/Reader/OLERead.php"";

//require_once ""OLE.php"";

批改为

//require_once ""PEAR.php"";

require_once ""oleread.inc"";

//require_once""OLE.php"";

注意2:

转换日期格式为:Y-m-d,但是天数还是多一天,小时也多了8个小时

从EXCEL中导入日期类型的字段的时候,问题就来了,首先是时区的问题,还有格式的问题。从EXCEL中读出的都是“d/m/Y”的格式,MYSQL中我一般都用“Y-m-d”的格式。

把:

var $dateFormats = array (

0xe => "d/m/Y",

0xf => "d-M-Y",

0x10 => "d-M",

0x11 => "M-Y",

0x12 => "h:i a",

0x13 => "h:i:s a",

0x14 => "H:i",

0x15 => "H:i:s",

0x16 => "d/m/Y H:i",

0x2d => "i:s",

0x2e => "H:i:s",

0x2f => "i:s.S")

改成:

var $dateFormats = array (

0xe => "Y-m-d",

0xf => "Y-M-d",

0x10 => "M-d",

0x11 => "Y-M",

0x12 => "h:i a",

0x13 => "h:i:s a",

0x14 => "H:i",

0x15 => "H:i:s",

0x16 => "Y-m-d H:i",

0x2d => "i:s",

0x2e => "H:i:s",

0x2f => "i:s.S");

注意3:

修改天数,但是小时还是多8小时

$utcValue =

round(($utcDays+1)*

SPREADSHEET_EXCEL_READER_MSINADAY);

修改成

$utcValue =

round(($utcDays+0) *

SPREADSHEET_EXCEL_READER_MSINADAY);

 类似资料: