SharePoint 2010 환경에 배포 된 .Net 양식으로 Excel 데이터를 업로드하는 데 문제가 있습니다. 이 기능은 .net 양식을 Excel에 업로드하여 Excel 양식을 서버의 한 위치에 저장합니다. Excel이 서버에 저장되면 Microsoft.ACE.OLEDB.12.0 공급자는 Excel에서 데이터를 가져 와서 .Net 텍스트 상자 컨트롤에서 쉼표로 구분 된 값으로 업로드합니다.SharePoint 2010 사용자 지정 양식으로 Excel 가져 오기
여기 현재 우리가 직면하고있는 문제가 있습니다.
1)이 기능은 사용자가 SharePoint 2010에서 서비스 계정 (상위 사용 권한 계정)으로 로그인 한 경우에만 작동합니다. 2.) SharePoint에서 사용자 계정으로 로그인하지 못했지만 아래에 오류가 발생했습니다. 나는 이것이 권한 문제로 인해 주로 발생한다고 생각한다. 모든 사용자에게 서비스 계정 권한을 할당 할 수는 없습니다.
엑셀 업로드 활동을 완료하고 사용자 계정의 로그인을 처분하기 위해 서비스 계정 로그인을 가장 할 수있는 방법이 있습니까? 또는 내 문제를 해결하는 데 도움이되는 제안 사항이 있습니까?
오류 메시지 :
오류가 발생했습니다 System.Data.OleDb.OleDbException : System.Data.OleDb.OleDbConnectionInternal..ctor에서 지정되지 않은 오류 System.Data.OleDb에서 (는 OleDbConnection 연결은 constr을 OleDbConnectionString) .OleDbConnectionFactory.CreateConnection (DbConnectionOptions 옵션, 개체 poolGroupProviderInfo, DbConnectionPool 풀, DbConnection owningObject)에서 System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection (DbConnection owningConnection, DbConnectionPoolGroup poolGroup)에서 System.Data.ProviderBase.DbConnectionFactory.GetConnection (DbConnection owningConnection) at System .Data.ProviderBase.DbConnectionClosed.OpenConnection (DbConnection outerConnection, DbConnection System.Data.Common.DbDataAdapter.FillInternal (DataSet 데이터 집합, DataTable [])에서 System.Data.Office.AccessDbConnection.Open() System.Data.Common.DbDataAdapter.QuietOpen (IDbConnection 연결, ConnectionState & originalState)의 System.Data.OleDb.OleDbConnection.Open System.Data.Common.DbDataAdapter.Fill (DataSet DataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand 명령, CommandBehavior 비헤이비어)의 System.Data (System.Data.Data.Common.DbDataAdapter.Fill)에서 System.Data.Common.DbDataAdapter.Data의 데이터 형식, Int32 startRecord, Int32 maxRecords, SegmentationTool.createSegment.btnFileUploadForDNIS_Click에서 .Common.DbDataAdapter.Fill (데이터 집합와 DataSet) (개체 보낸 사람, EventArgs입니다 전자)
코드 :
strTarget = fileUploadForDNIS.FileName;
string[] arrCheckExtension = strTarget.Split('.');
if (arrCheckExtension.Length >= 2)
{
if (arrCheckExtension[1].ToString().Equals("xls") || arrCheckExtension[1].ToString().Equals("xlsx"))
{
fileUploadForDNIS.SaveAs("B:\\Test\\" + strTarget);
strConnForExcel = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0;HDR=YES;IMEX=1;""", "B:\\Test\\"+strTarget);
strQueryForExcel = String.Format("select dnis_id from [{0}$]", "oms_dnis");
OleDbDataAdapter adapForDNIS = new OleDbDataAdapter(strQueryForExcel, strConnForExcel);
dsForDNIS = new DataSet();
adapForDNIS.Fill(dsForDNIS);
if (dsForDNIS.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < dsForDNIS.Tables[0].Rows.Count; i++)
{
if (strDNISids == "")
{
strDNISids += dsForDNIS.Tables[0].Rows[i]["dnis_id"].ToString();
}
else
{
strDNISids += "," + dsForDNIS.Tables[0].Rows[i]["dnis_id"].ToString();
}
}
txtSpecAcquWinbackDNISForUpload.Text = strDNISids;
rdoMSCSpecificValue.Focus();
System.IO.File.Delete("B:\\Test\\" + strTarget);
}
}
else
{
Response.Write("<script language='javascript'>alert('Please Select File with .xls or xlsx Extension');</script>");
fileUploadForDNIS.Focus();
}
}
답장을 보내 주셔서 감사합니다. Max를 엑셀 데이터를 저장하고 메모리 스트림에 저장하도록 코드를 변경하고 프로세스가 문자열에 Excel 데이터를 할당하려고합니다. 현재 SharePoint 2010 서버 파일 시스템에서 Excel을 저장하고 읽으려는 동안 권한으로 인해 많은 문제가 발생합니다. 위의 링크로 나를 안내해 주셔서 감사합니다. 하지만 메모리 스트림에 데이터를 저장하고 C#을 통해 문자열에 할당 할 수 있는지 알려주실 수 있습니까? – user545359
[읽기] ExcelDataReader를 사용하여 메모리에서 Excel을 읽는 방법은 [http://stackoverflow.com/questions/262341/get-data-from-an-uploaded-excel-file-without-saving-to-file-system] 어쨌든 당신이 달성하기를 원하는 것이 명확하지 않습니다. – Max