我目前正在开发一个项目,我想将我的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];
}
我还是个学习型学生。现在做实习两周。
答案 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)
重载来显式转换值。