日期:2014-05-17  浏览次数:20764 次

IE导出excel部分日期显示不正确
function exporttdp()
{
var curTbl = document.getElementById("tabal"); 
  var oXL = new ActiveXObject("Excel.Application"); 
  //创建AX对象excel 
  var oWB = oXL.Workbooks.Add(); 
  //获取workbook对象 
  var xlsheet = oWB.Worksheets(1);
  //激活当前sheet 
  var sel = document.body.createTextRange(); 
  sel.moveToElementText(curTbl); 
  //全选TextRange中内容 
  sel.execCommand("Copy"); 
  //复制TextRange中内容  
  xlsheet.Paste(); 
  //粘贴到活动的EXCEL中  
  //oXL.Visible = true; 
  //设置excel可见属性 
  try{
  var fname = oXL.Application.GetSaveAsFilename("国内项目履约", "Excel 工作簿(*.xlsx), *.xlsx");
   
  if(fname){
   
  oWB.SaveAs(fname);
  }
  else
  {
  return false;
  }
   
  }catch(e){
  print("Nested catch caught " + e);
  }finally{
   
  oWB.Close(savechanges=false);
  oXL.Quit();
  oXL=null;
  //结束excel进程,1秒后调用Cleanup释放内存
  idTmr = window.setInterval("Cleanup();",1);
  }
}

function Cleanup() 
{
//取消window.setInterval方法设置的定时器
  window.clearInterval(idTmr);
  //释放内存
  CollectGarbage();
}

我用上面的方法导出指定table的内容,为什么有日期的数据都不对呢,图片贴不上来,就是日期那列,有的对的有的不对,全都显示的是#号,我点表头的自动列宽后就全显示出来了,很奇怪,没有时间写java代码做导出,项目通常都是赶出来的,你们懂的,只好用这个方法导出excel了,有没有办法解决下,页面上我已经用fmt格式化了,还是不行,通常是第一行和最后一行数据有问题,中间的数据基本显示正确,纠结ing。

------解决方案--------------------
可以设置每列的宽度的, sheet.setRowView(0, 500);// 列宽
------解决方案--------------------
楼上正解,显示为#是因为列宽太小所致
可以在导出时设置,也可在Excel打开后手工改变列宽
------解决方案--------------------
我们的有导出的格式模板,改Excel模板就行了