问题描述
先看看我的导出方法///<summary>///将datagridview中的数据导出Excel///</summary>///<paramname="gridView">要导出的datagridview</param>///<paramname="bar">进度条控件</param>///<paramname="startIndex">从datagridview的第几列开始写入Excel</param>publicstaticvoidDgvSaveAsExl(DataGridViewgridView,ToolStripProgressBarbar,stringtitle,intstartIndex){……//循环写入数值sheet.Cells[i+3,c]=gridView[j,i].Value.ToString();……}问题就是:我datagirdview中日期列的格式是这样的:2012-02-2310:30:00导出后datagirdview中日期列的格式成了这样了:2/23/201210:30:00而导出的excel格式还是和原来的datagirdview中的一样的:2012-02-2310:30:00我想应该是datagridview传入我定义的方法中是一个引用类型,导出的时候改变了该列的格式所以原datagridview也被改了不知道是不是这个原因,有什么办法解决呢?望得到指点
解决方案
解决方案二:
怎么没人睬啊····在线等啊
解决方案三:
ToString的时候Format一下不就行了,toString传过去就是个string,不是引用:sheet.Cells[i+3,c]=gridView[j,i].Value.ToString(yyyy-MM-dd);
解决方案四:
引用2楼hoken2020856的回复:
ToString的时候Format一下不就行了,toString传过去就是个string,不是引用:sheet.Cells[i+3,c]=gridView[j,i].Value.ToString(yyyy-MM-dd);
excel中是对了的,格式都是我想要的,我的问题是经过导出操作,我的datagridview的日期列格式被改变了你说的,这个方法我用过了,没用。刚才断点查看了一下,在赋值给excel单元格之前datagridview的格式已经变了
解决方案五:
问题解决了导出函方法中有这样一句:System.Threading.Thread.CurrentThread.CurrentCulture=newSystem.Globalization.CultureInfo("en-US");我不懂什么意思--!!!注释掉就没出问题了迟点再结贴,希望有人能帮解释下这句,呵呵
解决方案六:
在这句的下面加tostring
解决方案七:
System.Threading.Thread.CurrentThread.CurrentCulture=newSystem.Globalization.CultureInfo("en-US");这个是编码方式,美式编码的一种,你这个Excel导出有点问题,在大数据量的时候,你逐行扫描,会很慢
解决方案八:
System.Threading.Thread.CurrentThread.CurrentCulture=newSystem.Globalization.CultureInfo("en-US");这句话在多语言程序中用得比较多,告诉系统你现在的语言为en-US(即美国使用的英语),因为美制的日期为“mm/dd/yyyy”,而中国的格式为“yyyy年m月d日”,所以如果你把这句话注释掉就没问题了如果想看看中文是什么样子,可以把en-US改成zh-CN