winform导出excel后datagridview日期列格式被改变的问题

问题描述

先看看我的导出方法///<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

时间: 2024-08-03 00:33:21

winform导出excel后datagridview日期列格式被改变的问题的相关文章

求教:gridview导出Excel后,表格的列宽如何设成最适应列宽。

问题描述 gridview导出Excel后,表格的列宽如何设成最适应列宽.还有,表格除了GridView的内容外,其余的空白表格没有网格线.求大神教教.谢谢了.急.protectedvoidButton1_Click(objectsender,EventArgse){Export("application/ms-excel","学生成绩报表.xls");GridView1.Enabled=true;}privatevoidExport(stringFileType,

flex4.0-flex 导出excel后的时间和原时间有差异

问题描述 flex 导出excel后的时间和原时间有差异 大神们,求指教: 我用flex 4.6开发了一个小程序,界面上查询出的时间显示一切正常,但是通过 导出为excel后,表格中的时间会莫名其妙的比原时间少16小时. 解决方案 人的差异在于业余时间人的差异在于业余时间

方法-求大神,用javascript导出Excel后,怎么用JS对某些单元格设置计算函数?

问题描述 求大神,用javascript导出Excel后,怎么用JS对某些单元格设置计算函数? 求大神,用javascript导出Excel后,要对某些单元格设置计算函数, 但是JS方法里面该怎么写语句能具体设置到指定单元格的计算函数? 求大神解答,谢谢 函数比如=AVERAGE(A9: D17)*E1+50 解决方案 .value="=函数" 解决方案二: js没法直接导出excel,需要提交到服务器,用vba poi一类的库产生excel 解决方案三: js不能caozuoexce

winform如何实现导出excel后,打开该excel文件,并在里面再次进行操作?

问题描述 现在业务有个需求.导出2份excel后(内容不同,一份是数据,一份是图片),再将两份的内容统一到一份excel里面,内容分为两个不同的sheet.小弟没对excel操作那么深入.最多也就知道如何导出.可是导出后的读取以及后续操作.实在不知道该如何做!请大家帮个忙!谢谢 解决方案 解决方案二:帮帮忙啊~

Ext.NET 导出Excel时不认列

问题描述 我在将Ext.Net的GridPanel控件导出Excel文件时导出的Excel不认列,将一整行的数据都放在了一个单元格里面.方法是使用的Ext官方的例子.varsaveData=function(){GridData.setValue(Ext.encode(gvV_Wms_LocStock.getStore().reader.jsonData));} 前台页面<formid="form1"runat="server"><divrunat

asp.net导出Excel怎样设置单元格格式

问题描述 stringRowSreslut=null;for(intk=0;k<new_dt.Rows.Count;k++){for(intj=0;j<new_dt.Columns.Count;j++){RowSreslut+=new_dt.Rows[k][j]+"t";}sw.WriteLine(RowSreslut);RowSreslut=null;}//stringstyle=@"<style>.text{mso-number-format:@;

发布到服务器后,日期参数格式发生了变化

问题描述 本地:WIN7X64,VS2008,ORACLE11G服务器:WINSEVER2003x86,ORACLE10方法中有个插入时间类型的SQL语句,并且用到了to_date,本地调试没有问题,可以正确的插入服务器数据库中,可是发布到服务器后,再调用这个方法,发现日期格式发生了变化,导致to_date出现了错误ORA01843,无效的月份,原因我传递的是2014-12-19,可是却变成了20-12-2014,日期还加了一天.这是什么原因?又该如何解决? 解决方案 解决方案二:是服务器的日期

ASP.NET导出EXCEL后,想要刷新页面(在线等、急用)

问题描述 问题是这样的:我做了一个下载,下载完以后,想要刷新一下页面,看了论坛里面之前的帖子,好像都没有解决不知道现在有木有大神解决了的跪求方法在线等急用 解决方案 解决方案二:你的页面设置个settimeout定时刷下吧解决方案三:我试试谢谢解决方案四:只需要刷新一次页面不必总是刷新使用timer好像不合适请问还有别的解决方法吗解决方案五:下载完成后Response.Redirect("当前页面");试试看解决方案六:最终还是在重新点击了查询按钮,再次刷新实现的因为点击下载之后,页面

关于控件导出Excel格式问题的新解决方案

今天弄了一下控件导出Excel,于是产生了格式问题了,一些日期如20091222的名称被显示为科学记数法. 所以,我搜了博客园.一大堆的文章都是复制来复制去的资料. 基本上都有这么一行闪亮的代码:文本:vnd.ms-excel.numberformat:@ 有深入一点的文章,会告诉你,这个东西要写在<td style="vnd.ms-excel.numberformat:@">xxx</td>里 于是这里就产生这两个分支方法: 1.直接就写上<td sty