使用 SmartXLS 将数据从 excel 文件(带有日期列)导出到 DataGrid
Export data from excel file (with a date column) to DataGrid using SmartXLS
我已经通过以下代码成功地将数据从 excel 导出到数据网格:
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 格式 :():
我认为 DateTime
格式只有在列中的每个值(在 excel 文件本身中)都是日期格式时才有效。我想除了删除所有非日期格式的内容外别无他法。 ☹
我知道这个问题有点老了,但这对我有用,可能对其他人有帮助...
我在数据网格视图中获取单元格的值,作为字符串
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");
如果函数returns一个年份不是1900的日期,则将yyyy/mm/dd格式的日期传给字符串,然后将字符串作为单元格值。
xlRange.Value2 = val;
这是函数...非常简单,但就像我说的,它对我有用。
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;
}
我已经通过以下代码成功地将数据从 excel 导出到数据网格:
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 格式 :():
我认为 DateTime
格式只有在列中的每个值(在 excel 文件本身中)都是日期格式时才有效。我想除了删除所有非日期格式的内容外别无他法。 ☹
我知道这个问题有点老了,但这对我有用,可能对其他人有帮助...
我在数据网格视图中获取单元格的值,作为字符串
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");
如果函数returns一个年份不是1900的日期,则将yyyy/mm/dd格式的日期传给字符串,然后将字符串作为单元格值。
xlRange.Value2 = val;
这是函数...非常简单,但就像我说的,它对我有用。
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;
}