2016-09-28 2 views
0

В моем веб-приложении мне нужно импортировать данные OpenOffice calc в базу данных SQL-SQL, которую я искал в google, но я не нашел, что нашел ole-db вместо этого, как я могу подключиться к открытому офису.Как использовать OpenExice calc excel для подключения к sql-серверу вместо oledb excel-соединения в asp.net

Это соединение OLE-DB:

string excelConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 8.0", path); 

и как я могу получить Open Office Calc для связи.

Обновленный код:

using System.Text; 
    using unoidl.com.sun.star.uno; 
    using unoidl.com.sun.star.lang; 
    using unoidl.com.sun.star.frame; 
    using unoidl.com.sun.star.beans; 
    using unoidl.com.sun.star.sheet; 
    using unoidl.com.sun.star.container; 
    using unoidl.com.sun.star.table; 
    using unoidl.com.sun.star.text; 
protected void import_Click(object sender, EventArgs e) 
    { 
     XComponentContext oStrap = uno.util.Bootstrap.bootstrap(); 
       XMultiServiceFactory oServMan = (XMultiServiceFactory)oStrap.getServiceManager(); 
       XComponentLoader desktop = (XComponentLoader)oServMan.createInstance("com.sun.star.frame.Desktop"); 
       string url = @"private:factory/scalc"; 
       PropertyValue[] loadProps = new PropertyValue[1]; 
       XComponent document = desktop.loadComponentFromURL(url, "_blank", 0, loadProps); 
       XSpreadsheets oSheets = ((XSpreadsheetDocument)document).getSheets(); 
       XIndexAccess oSheetsIA = (XIndexAccess)oSheets; 
       XSpreadsheet sheet = (XSpreadsheet)oSheetsIA.getByIndex(0).Value; 
       current = ((XText)sheet.getCellByPosition(0, iRow)).getString(); 
} 

может кто-нибудь сказать мне, как я могу это сделать

Спасибо

+0

Я уже упоминал в своем веб-приложении вопрос –

+0

Одна вещь ... Я не установил Open Office .. Загрузите образец .xls-файла –

+0

Мой лист также .xlsx, но у меня нет ms-office i нужно открыть файл .xlsx для использования в офисе или офисе в офисе. –

ответ

0

Мой лучший инструмент Excell Convertion является LinqToExcel

Просто создать модель сказать

public class ExcelData 
    { 
     [ExcelColumn("IMEI1")] 
     public String IMEI1 { get; set; } 
     [ExcelColumn("IMEI2")] 
     public String IMEI2 { get; set; } 
     [ExcelColumn("COLOR")] 
     public String COLOR { get; set; } 
    } 

и одна строка кода

var excel = new ExcelQueryFactory(); 
       List<ExcelData> allListData = new List<ExcelData>(); 
       try 
       { 
        excel = new LinqToExcel.ExcelQueryFactory(@"C:\Users\Mhamudul Hasan\Desktop\FulllData.xlsx"); 
        allListData = (from c in excel.Worksheet<ExcelData>("Sheet1") 

            select c).ToList(); 
       } 
       catch (Exception exception) 
       { 


        return; 
       } 
List<ExcelFullData> entities = new List<ExcelFullData>(); 
      using (var ctx = new testEntities()) 
      { 

       foreach (var data in allListData) 
       { 
        ExcelFullData excel1 = new ExcelFullData 
        { 
         IMEI1 = data.IMEI1, 
         IMEI2 = data.IMEI2, 
         Color = data.COLOR 
        }; 
        //entities.Add(excel1); 
        ctx.ExcelFullDatas.Add(excel1); 

       } 
       ctx.SaveChanges(); 
      } 

где ExcelFullData является объект базы данных Просто показать месторасположение файла первенствует в WebServer ... не уверен Openoffice дать ему попробовать :)

+0

Спасибо, что ответили, это только соединение oledb, а не соединение. Мне нужно снова написать все импортные подключения к серверу sql. скажите, пожалуйста, –

+0

Я также пробовал подключение oledb в моих нескольких проектах .. но неизвестная причина .. это не работало каждый раз ... поэтому я дал альтернативный способ –

+0

Я попытался вставить ваш код, но я получаю ошибки в ExcelQueryFactory (), и LinqToExcel. как я могу это сделать в своей системе, у меня нет ms-office, у меня есть только Office Office и Libra Office, а мои листы находятся в формате .xlsx или .xls. Можете ли вы мне помочь. Спасибо –

0

Для OLEDB

  //Read excell 
      string input_Excell_fileName = @"Your Path"; 
      var connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + input_Excell_fileName + ";Extended Properties=\"Excel 12.0;IMEX=1;HDR=NO;TypeGuessRows=0;ImportMixedTypes=Text\""; ; 
      DataSet ds; 
      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); 
        ds = new DataSet(); 
        adapter.Fill(ds); 
       } 
      } 

и соединения с базой данных

string WSMSconnectionstring = @"Data Source=MHAMUDUL\WALTON;Initial Catalog=WSMS;Integrated Security=True"; 
//Or 
    // string WSMSconnectionstring = @"Data Source=MHAMUDUL\WALTON;Initial Catalog=WSMS;Persist Security Info=True;User ID=sa;Password=ssssss"; 
    using (SqlConnection con = new SqlConnection(WSMSconnectionstring)) 
         { 
          con.Open(); 
          string query1 = String.Format(@" Select * from ServiceTimeLog where ServiceID={0} and QCReleaseStatus is null 
    ", ServiceID); 
          SqlCommand cmd1 = new SqlCommand(query1, con); 
          SqlDataReader reader = cmd1.ExecuteReader(); 
          if (reader.HasRows) 
          { 
           reader.Dispose(); 
           //Update 
           string update = String.Format(@" update ServiceTimeLog set ServiceDate=GETDATE(), StartTime=GETDATE(),EndTime=GETDATE(),QCStartTime=GETDATE(),QCEndTime=GETDATE(),QCReleaseStatus='QCPassed',ReleaseStatus='SendToQC',TechnicianID=(select UserID from Users where UserName='{0}'),QCID=(select UserID from Users where UserName='{1}') where ServiceID={2}", TechnicainID, QCID, ServiceID); 
           SqlCommand updateCmd = new SqlCommand(update, con); 
           updateCmd.ExecuteNonQuery(); 

          } 
          else 
          { 
           reader.Dispose(); 
           //Insert 
           string insert = String.Format(@"insert into ServiceTimeLog(ServiceID,ReleaseStatus,ServiceDate,StartTime,EndTime,QCStartTime,QCEndTime,QCReleaseStatus,TechnicianID,QCID) values({0},'SendToQC',GETDATE(),GETDATE(),GETDATE(),GETDATE(),GETDATE(),'QCPassed',(select UserID from Users where UserName='{1}'),(select UserID from Users where UserName='{2}'))", ServiceID, TechnicainID, QCID); 
           SqlCommand insertCmd = new SqlCommand(insert, con); 
           insertCmd.ExecuteNonQuery(); 
          } 
          cmd1.Dispose(); 
          reader.Dispose(); 
         } 
+0

hI, он будет работать над кодом –