将Excel文件导入DataGridView时丢失数据

时间:2017-01-26 22:59:29

标签: c# database excel datagridview

我在将数据从.csv / Excel文件导入数据网格视图时遇到问题。

在我的.csv文件中有一个类似27/01/2017的日期列,当我将数据导入我的datagridview时,它工作正常,但只有12行来自日期列已转移。 datagridview中的日期列中缺少3-4条记录。

我已经尝试过IMAX = 1和ACE,但它并没有改变任何东西。但是当我将日期列更改为其他内容(不是日期)时,导入工作正常,似乎问题是导入日期。

这是我从.csv / Excel文件导入数据的代码:

private void button1_Click(object sender, EventArgs e) 
{
    try
    {
        string Pathconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=\"Excel 8.0;HDR=Yes;\";";

        OleDbConnection conn = new OleDbConnection(Pathconn);
        OleDbDataAdapter myDataAdaptor = new OleDbDataAdapter("Select * from [" + SheetName + "$]", conn);

        System.Data.DataTable dt = new System.Data.DataTable();
        myDataAdaptor.Fill(dt);

        dataGridView1.DataSource = dt;
    }
    catch(Exception)
    {
        MessageBox.Show("no workbook was uploaded please upload again!");
        wb.Close(false);
        excel.Quit();
    }

    wb.Close(false);
    excel.Quit();
}

如果有人可以帮我解决这个问题,谢谢!

1 个答案:

答案 0 :(得分:0)

我猜测数据在Excel中格式不正确。确认这是正确的,并尝试类似下面的内容。

using System;
using System.Data;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            System.Data.OleDb.OleDbConnection MyConnection;
            System.Data.DataSet DtSet;
            System.Data.OleDb.OleDbDataAdapter MyCommand;
            MyConnection = new System.Data.OleDb.OleDbConnection(@"provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\csharp.net-informations.xls';Extended Properties=Excel 8.0;");
            MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection);
            MyCommand.TableMappings.Add("Table", "Net-informations.com");
            DtSet = new System.Data.DataSet();
            MyCommand.Fill(DtSet);
            dataGridView1.DataSource = DtSet.Tables[0];
            MyConnection.Close();
        }
    }
}