如何停止将我的日期更改为数字的c#?

时间:2017-03-06 13:04:13

标签: c# excel datetime format

我目前正在开发一个项目,我想将我的excel插入到datagridview中。

但是我的日期(格式特别:d / mm / jjjj u:mm(比利时))excel format d/mm/jjjj u:mm不断变成数字。我怎么阻止这个 datagridview numbers

我目前正在使用openfiledialog并将其放入组合框中,以防有更多的工作表。

using (OpenFileDialog ofd = new OpenFileDialog())
            {
                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    FileStream fs = File.Open(ofd.FileName, FileMode.Open, FileAccess.Read);
                    IExcelDataReader reader = ExcelReaderFactory.CreateBinaryReader(fs);
                    reader.IsFirstRowAsColumnNames = true;
                    result = reader.AsDataSet();
                    comboBox1.Items.Clear();
                    foreach (DataTable dt in result.Tables)
                    {
                        comboBox1.Items.Add(dt.TableName);
                    }
                    reader.Close();

                }
            }

然后我只是用它在我的datagridview

中显示它
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        dataGridView1.DataSource = result.Tables[comboBox1.SelectedIndex];

    }

我还是个学习型学生。现在做实习两周。

3 个答案:

答案 0 :(得分:0)

您正在使用的格式字符串指定了。

尝试类似" ddd / MMMM / jjjj"。

在这方面有很多选择...

https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx

答案 1 :(得分:0)

Excel在内部将DateTime值存储为浮点值。将日期变成数字并不是C#。如果从Excel获取DateTime值,则可以使用DateTime.FromOADate(double)将其转换为C#DateTime。

示例:

var dateTime = DateTime.FromOADate((double)excelDateTime);

答案 2 :(得分:0)

使用reader.AsDataSet(true);代替reader.AsDataSet();

在代码段中,似乎Excel Data Reader用于读取旧的xls格式文件。 Excel使用"较新的"自2007年以来xlsx格式。 该软件包为旧格式(ExcelBinaryReader)提供了一个阅读器,为当前格式ExcelOpenXmlReader提供了一个阅读器。

不幸的是,AsDataSet()方法使用旧格式和新格式的不同默认值。日期仅以当前格式自动转换。在旧格式中,您必须使用AsDataSet(bool)重载来显式转换值。