Excel工作表到SQL表

我得到了从UI上传数据的Excel工作表,我需要通过WCF服务访问该工作表,并将其中包含的数据插入到SQL表中。

请指导如何做到这一点。

我在通过WCF服务阅读该Excel表单时面临挑战。

我已经使用下面的代码从本地驱动器读取Excel工作表。 将源属性更改为您的Excel工作表的FTP位置。

 string con = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\MyData.xlsx;" + @"Extended Properties='Excel 8.0;HDR=Yes;'"; using (OleDbConnection connection = new OleDbConnection(con)) { connection.Open(); OleDbCommand command = new OleDbCommand("select * from [Sheet1$]", connection); using (OleDbDataReader dr = command.ExecuteReader()) { while (dr.Read()) { // Do your things here } } } 

注意:.xls具有数据限制,而.xlsx支持表单中的更多数据行。 如果要读取.xlsx文件,则需要安装Microsoft Office Access数据库引擎2007

  string UploadedFilePath = FullPathOfExcelOnTheServer; string ExcelConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + UploadedFilePath + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1;FMT=Delimited\""; using (OleDbConnection oledbConnExcel = new OleDbConnection(ExcelConn)) { oledbConnExcel.Open(); using (OleDbDataAdapter oledbAdapterExcel = new OleDbDataAdapter("SELECT * from [" + SheetName + "$]", oledbConnExcel)) { using (DataTable dtblSheetData = new DataTable()) { try { oledbAdapterExcel.Fill(dtblSheetData); } catch (Exception lexQuery) { } } } oledbConnExcel.Close(); } 

事实是没有办法通过WCF服务读取Excel数据。 但是你可以把这个方法付诸实践

你可以:

  1. 读取客户端的所有excel数据并调用WCF服务,并将所有数据从excel包含在参数中(string数组)?
  2. 您可以在Excel工作表中创buildmacros(VB),以及通过参数调用WCF服务和发送数据。 当你在一个地方有所有的逻辑。
  3. 如果客户端是.NET端你可以使用atribbute [KnowsTypeAtribbute] 。然后你可以调用WCF服务,参数types为Exceltypes(Sheet或其他)。 可以通过使用某些types的表单OpenXml dll可以通过使用(但我不知道是表单或其他types是可序列化的。一个可序列化的是需要的)
  4. 您可以发送到WFC服务path文件并通过WCF服务从该path读取excel文件。