我从包含从UI上传的数据获取Excel工作表,我需要通过WCF服务访问该工作表,并将其中包含的数据插入到SQL表中。
请指导如何做到这一点。
我在通过WCF服务阅读Excel表时面临挑战。
答案 0 :(得分:1)
我使用下面的代码从本地驱动器读取Excel工作表。将Source属性更改为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答案 1 :(得分:0)
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();
}
答案 2 :(得分:0)
事实是无法通过WCF服务读取excel数据。但是你可以采用这种方法来实现这个方法
你可以:
[KnowsTypeAtribbute]
。然后您可以使用param类型作为Excel类型(Sheet或其他)调用WCF服务。可以通过使用某些类型的形式OpenXml dll可能有用(但我不知道是表格或其他类型是可序列化的。可序列化是必需的)