0

我已通过以下代码成功地将数据从 excel 导出到 datagrid:

using System;
using System.Data;
using System.Windows;
using System.Windows.Data;
using SmartXLS;


namespace Calibration_Trial
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            WorkBook m_book = new WorkBook();
            m_book.readXLSX("trial.xlsx");

            //Read data from spreadsheet.
            DataTable mbooktable = m_book.ExportDataTable(9, 0, 4, 4, false, true);


            simpleDataGrid.ItemsSource = mbooktable.AsDataView();
        }
    }
}

ExportDataTable如您所见,有 6 个参数。最后一个参数true意味着它应该检查列是否为日期时间类型。所以我不明白为什么我仍然得到错误的输出。我错过了什么吗?

这是一个屏幕截图(Column4 应该是 DateTime 格式:(): Column4 应该是 DateTime 格式:(

4

2 回答 2

0

我认为DateTime只有当列中的每个值(在 excel 文件本身中)都是日期格式时,该格式才有效。我想除了删除所有不是日期格式的东西之外别无他法。☹</p>

于 2015-01-21T15:41:26.277 回答
0

我知道这个问题有点老了,但这对我有用,它可能对其他人有帮助......

我在数据网格视图中获取单元格的值,作为字符串

string val = "";
if (dgv.Rows[rowCount].Cells[colCount].Value != null)
    val = dgv.Rows[rowCount].Cells[colCount].Value.ToString();

然后我检查它是否是一个日期

DateTime dt = IsDate(val);

if (dt.Year != 1900)
    val = dt.ToString("yyyy/MM/dd");

如果函数返回年份不是 1900 的日期,则将 yyyy/mm/dd 格式的日期传递给字符串,然后将该字符串用作单元格值。

xlRange.Value2 = 值;

这是功能......非常简单,但就像我说的那样,它对我有用。

private DateTime IsDate(string toCheck)
{
    DateTime dt = new DateTime();
    if (DateTime.TryParse(toCheck, out dt))
        dt = DateTime.Parse(toCheck);
    else
        dt = DateTime.Parse("1900/01/01");

    return dt;
}
于 2016-04-15T08:50:16.930 回答