找回密码
 立即注册

QQ登录

只需一步,快速开始

落幕

注册会员

6

主题

13

帖子

146

积分

注册会员

积分
146
落幕
注册会员   /  发表于:2016-1-5 17:12  /   查看:4966  /  回复:3
当把FlexGrid的列的DataType设置成Object的时候,赋值DateTime类型的值,在软件界面中显示正常,但导出后显示格式错误
控件版本
初始化数据源数据

form前端界面

form后台代码

运行后FlexGrid中显示的数据

导出后Excel中显示的数据


数据源:
public DataTable InitTableDate()
                {
                        DataTable dt = new DataTable();
                        dt.Clear();
                        for (int i = 0; i < 7; i++)
                        {
                                if (i == 0 || i == 1)
                                        dt.Columns.Add((i + 1).ToString(), typeof(DateTime));
                                else if (i == 2 || i == 3)
                                        dt.Columns.Add((i + 1).ToString(), typeof(object));
                                else
                                        dt.Columns.Add((i + 1).ToString(), typeof(string));
                        }
                        for (int j = 0; j < 4; j++)
                        {
                                DataRow dr = dt.NewRow();
                                for (int i = 0; i < 7; i++)
                                {
                                        if (i == 0 || i == 1)
                                                dr = DateTime.Now;
                                        else if (i == 2 || i == 3)
                                                dr = DateTime.Now;
                                        else
                                                dr = DateTime.Now.ToShortDateString();
                                }
                                dt.Rows.Add(dr);
                        }
                        return dt;
                }
后台代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using C1.Win.C1FlexGrid;

namespace C1Test
{
        public partial class FlexGridExport : Form
        {
                public FlexGridExport()
                {
                        InitializeComponent();
                }

                private void FlexGridExport_Load(object sender, EventArgs e)
                {
                        this.fgvDateTest.SetDataBinding(InitData.Instance.InitTableDate(), "", false);
                }

                private void btnExport_Click(object sender, EventArgs e)
                {
                        this.fgvDateTest.SaveExcel("dateTest.xlsx", "sheet1",
                                FileFlags.IncludeFixedCells | FileFlags.AsDisplayed);
                }
        }
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

3 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2016-1-6 10:39:00
沙发
回复 1楼落幕的帖子

谢谢您的反馈。
根据您的代码,列3和列4数据源的字段类型是object类型,但是您实际存储的是日期类型。
在导出的时候,由于Excel表格没有对应的object类型,会进行类型的转换,因此excel里才会存储object的“日”。
这是设计。
如果是日期类型,请将它的数据类型设置为日期或是string。

另外,从您的代码来看,这应该是WinForm平台下的问题?
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
落幕
注册会员   /  发表于:2016-1-6 17:26:00
板凳
回复 2楼Alice的帖子

忘记选区了,确实是WinForm界面下的问题。了解了,谢谢
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-1-7 10:06:00
地板
回复 3楼落幕的帖子

不用客气。
我会帮您移到对应平台。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部