Импорт данных из excel в С#

Я импортирую данные из листа excel в базу данных моего сервера sql в С#. И ниже моя строка подключения для этого -

var OleDbcon = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;");

Но это не работает на машинах, где не установлен MS Office.

И для этой проблемы я изменил свою строку подключения следующим образом:

var OleDbcon = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=Text;");

Но все же я не могу импортировать данные. Может ли кто-нибудь помочь мне в этом?

Я импортирую данные только из файлов .xls.


person Pawan Agrawal    schedule 09.04.2015    source источник


Ответы (2)


вы можете открыть его без использования процесса excel с этим примером кода, поэтому вам не нужно использовать Microsoft.Office.Interop.Excel

var fileName = @"C:\ExcelFile.xlsx";
var connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=\"Excel 12.0;IMEX=1;HDR=NO;TypeGuessRows=0;ImportMixedTypes=Text\""; ;
using (var conn = new OleDbConnection(connectionString))
{
    conn.Open();

    var sheets = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
    using (var cmd = conn.CreateCommand())
    {
        cmd.CommandText = "SELECT * FROM [" + sheets.Rows[0]["TABLE_NAME"].ToString() + "] ";

        var adapter = new OleDbDataAdapter(cmd);
        var ds = new DataSet();
        adapter.Fill(ds);
    }
}

Вот ссылка на него: Как прочитать файл excel на C# без использования библиотек Microsoft.Office.Interop.Excel

Я надеюсь, что это поможет, удачи!

person Ferryzijl    schedule 09.04.2015

Нет необходимости устанавливать Microsoft на другие машины, просто сделайте локальную копию dll, я имею в виду Microsoft.Office.Interop.Excel.dll

(извините, если это будет комментарий, но у меня недостаточно репутации, чтобы сделать это)

person razielx4crazy    schedule 09.04.2015