php导入excel的日期格式问题 ...不给源码,很难帮咧.....不过至少可以var_dump ( $sheet1 ); 来看看,到底把excel 的数据读成怎么样了吧. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 其余数据都读取正常,仅日期不对。excel 格式:(该excel文件是另一个公司提供的。这个excel日期格式很怪,鼠标双击内容会改变。) ---------------------------------- 2008 3 20 14:11 2008 3 20 14:12 2008 3 20 14:12 ********************************** php导出后的格式 ---------------------------------- 2008-3-20.590972222388 2008-3-20.591666666791 2008-3-20.591666666791 =====================================源码太长,我试着分批发一下。 太长了。整点格式化的代码吧 : function ReadFromFat( $chain, $gran = 0x200 ) { $rc = ''; for( $i = 0; $i < count($chain); $i++ ) $rc .= $this->get( $chain[$i] * $gran, $gran ); return $rc; } function close() { switch($this->_type ) { case DP_FILE_SOURCE: @fclose( $this->_data ); case DP_STRING_SOURCE: $this->_data = null; default: $_type = DP_EMPTY; break; } } function isValid() { return $this->_type != DP_EMPTY; } var $_type = DP_EMPTY; var $_data = null; var $_size = -1; var $_baseOfs = 0;}class ExcelFileParser{ var $dp = null; var $max_blocks; var $max_sblocks; // Internal variables var $fat; var $sfat; // Removed: var $sbd; // Removed: var $syear; var $formats; var $xf; var $fonts; var $dbglog; function ExcelFileParser($logfile="",$level=ABC_NO_LOG) { $this->dbglog = &DebugOut::getWriterSingleton($logfile,"",$level); $this->dbglog->info("Logger started"); } function populateFormat() { $this->dbglog->trace(" populateFormat() function call"); $ret = array ( 0=> "General", 1=> "0", 2=> "0.00", 3=> "#,##0", 4=> "#,##0.00", 5=> "($#,##0_);($#,##0)", 6=> "($#,##0_);[Red]($#,##0)", 7=> "($#,##0.00);($#,##0.00)", 8=> "($#,##0.00_);[Red]($#,##0.00)", 9=> "0%", 0xa=> "0.00%", 0xb=> "0.00E+00", 0xc=> "# ?/?", 0xd=> "# ??/??", 0xe=> "m/d/yy", 0xf=> "d-mmm-yy", 0x10=> "d-mmm", 0x11=> "mmm-yy", 0x12=> "h:mm AM/PM", 0x13=> "h:mm:ss AM/PM", 0x14=> "h:mm", 0x15=> "h:mm:ss", 0x16=> "m/d/yy h:mm", // 0x17 - 0x24 reserved for international and undocumented 0x17=> "0x17", 0x18=> "0x18", 0x19=> "0x19", 0x1a=> "0x1a", 0x1b=> "0x1b", 0x1c=> "0x1c", 0x1d=> "0x1d", 0x1e=> "0x1e", 0x1f=> "0x1f", 0x20=> "0x20", 0x21=> "0x21", 0x22=> "0x22", 0x23=> "0x23", 0x24=> "0x24", // 0x17 - 0x24 reserved for international and undocumented 0x25=> "(#,##0_);(#,##0)", 0x26=> "(#,##0_);[Red](#,##0)", 0x27=> "(#,##0.00_);(#,##0.00)", 0x28=> "(#,##0.00_);[Red](#,##0.00)", 0x29=> "_(*#,##0_);_(*(#,##0);_(* \"-\"_);_(@_)", 0x2a=> "_($*#,##0_);_($*(#,##0);_($* \"-\"_);_(@_)", 0x2b=> "_(*#,##0.00_);_(*(#,##0.00);_(*\"-\"??_);_(@_)", 0x2c=> "_($*#,##0.00_);_($*(#,##0.00);_($*\"-\"??_);_(@_)", 0x2d=> "mm:ss", 0x2e=> "[h]:mm:ss", 0x2f=> "mm:ss.0", 0x30=> "##0.0E+0", 0x31=> "@"); $this->dbglog->dump($ret,"\$ret"); $this->dbglog->trace("populateFormat() function return"); return $ret; } 太复杂了一点,不容易看明白.试着换一个Excel解析类,我给一个地址,你下载来试一下.http://sourceforge.net/project/showfiles.php?group_id=99160使用方法可见:http://www.ustrem.org/en/articles/reading-xls-with-php-en/ 谢谢了。那个phpExcelReader我用过。上面那个读取其他列都没问题,就是那个日期时间列格式不对。 自己解决了。是excel文件问题。将日期导出为文本后,再从文本中导入回来,即可正常显示。应该是导出为文本时去掉了那个特殊的格式的原因。 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", 0x30 => "d M Y H:i");改成这个试试,应该就可以了 电脑里的应用程序被自动删除了,是怎么回事? 问个算法问题? PHP计算两时间之间的月数 ====== 怎么比较两个中文字符串是否相等 ========== 讨论(在Unix下安装php+apache+mysql) 急!为什么老是提示mysql_connect()是未定义的函数 哪里可以找到PHP编写的WEBMAIL系统原码!? 调用word出现以下问题,不知如何解决? 这里用#表示什么意思呢 php+ajax+echarts实现动态更新饼图数据(点击可改变) 请教 php + mysql 环境下 验证码不显示问题 PHP 如何查询IP地址 100分送上
----------------------------------
2008 3 20 14:11
2008 3 20 14:12
2008 3 20 14:12 ********************************** php导出后的格式
----------------------------------
2008-3-20.590972222388
2008-3-20.591666666791
2008-3-20.591666666791 =====================================
源码太长,我试着分批发一下。
{
$rc = '';
for( $i = 0; $i < count($chain); $i++ )
$rc .= $this->get( $chain[$i] * $gran, $gran );
return $rc;
}
function close()
{
switch($this->_type )
{
case DP_FILE_SOURCE:
@fclose( $this->_data );
case DP_STRING_SOURCE:
$this->_data = null;
default:
$_type = DP_EMPTY;
break;
}
}
function isValid()
{
return $this->_type != DP_EMPTY;
}
var $_type = DP_EMPTY;
var $_data = null;
var $_size = -1;
var $_baseOfs = 0;
}class ExcelFileParser
{
var $dp = null;
var $max_blocks;
var $max_sblocks;
// Internal variables
var $fat;
var $sfat;
// Removed: var $sbd;
// Removed: var $syear;
var $formats;
var $xf;
var $fonts;
var $dbglog; function ExcelFileParser($logfile="",$level=ABC_NO_LOG)
{
$this->dbglog = &DebugOut::getWriterSingleton($logfile,"",$level);
$this->dbglog->info("Logger started");
}
function populateFormat()
{
$this->dbglog->trace(" populateFormat() function call");
$ret = array (
0=> "General",
1=> "0",
2=> "0.00",
3=> "#,##0",
4=> "#,##0.00",
5=> "($#,##0_);($#,##0)",
6=> "($#,##0_);[Red]($#,##0)",
7=> "($#,##0.00);($#,##0.00)",
8=> "($#,##0.00_);[Red]($#,##0.00)",
9=> "0%",
0xa=> "0.00%",
0xb=> "0.00E+00",
0xc=> "# ?/?",
0xd=> "# ??/??",
0xe=> "m/d/yy",
0xf=> "d-mmm-yy",
0x10=> "d-mmm",
0x11=> "mmm-yy",
0x12=> "h:mm AM/PM",
0x13=> "h:mm:ss AM/PM",
0x14=> "h:mm",
0x15=> "h:mm:ss",
0x16=> "m/d/yy h:mm",
// 0x17 - 0x24 reserved for international and undocumented
0x17=> "0x17",
0x18=> "0x18",
0x19=> "0x19",
0x1a=> "0x1a",
0x1b=> "0x1b",
0x1c=> "0x1c",
0x1d=> "0x1d",
0x1e=> "0x1e",
0x1f=> "0x1f",
0x20=> "0x20",
0x21=> "0x21",
0x22=> "0x22",
0x23=> "0x23",
0x24=> "0x24",
// 0x17 - 0x24 reserved for international and undocumented
0x25=> "(#,##0_);(#,##0)",
0x26=> "(#,##0_);[Red](#,##0)",
0x27=> "(#,##0.00_);(#,##0.00)",
0x28=> "(#,##0.00_);[Red](#,##0.00)",
0x29=> "_(*#,##0_);_(*(#,##0);_(* \"-\"_);_(@_)",
0x2a=> "_($*#,##0_);_($*(#,##0);_($* \"-\"_);_(@_)",
0x2b=> "_(*#,##0.00_);_(*(#,##0.00);_(*\"-\"??_);_(@_)",
0x2c=> "_($*#,##0.00_);_($*(#,##0.00);_($*\"-\"??_);_(@_)",
0x2d=> "mm:ss",
0x2e=> "[h]:mm:ss",
0x2f=> "mm:ss.0",
0x30=> "##0.0E+0",
0x31=> "@");
$this->dbglog->dump($ret,"\$ret");
$this->dbglog->trace("populateFormat() function return");
return $ret;
}
http://sourceforge.net/project/showfiles.php?group_id=99160
使用方法可见:
http://www.ustrem.org/en/articles/reading-xls-with-php-en/
上面那个读取其他列都没问题,就是那个日期时间列格式不对。
将日期导出为文本后,再从文本中导入回来,即可正常显示。
应该是导出为文本时去掉了那个特殊的格式的原因。
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",
0x30 => "d M Y H:i");改成这个试试,应该就可以了