-1

나는 하늘 blob 저장에 Excel 파일을 저장하는 mvc 응용 프로그램을 만들었습니다. 지금 나는이 엑셀 파일의 내용을 읽고 싶다.Azure Blob에서 Excel 파일을 대량 저장하는 방법

이전에 내가 내 C에이 파일을 저장 :/temp 폴더와 코드를 대량 복사에 다음과 같이이다 : -

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

     OleDbConnection connection = new OleDbConnection(); 

     connection.ConnectionString = excelConnectionString; 

     OleDbCommand command = new OleDbCommand("select * from [Sheet1$]", connection); 

     connection.Open(); 

     DbDataReader dr = command.ExecuteReader(); 
      using (var bulkCopy = new SqlBulkCopy(ConfigurationManager.ConnectionStrings["myString"].ConnectionString, SqlBulkCopyOptions.KeepNulls & SqlBulkCopyOptions.KeepIdentity)) 
      { 
       //my logic 
      } 
      connection.Close(); 

내가 푸른 구름에이 솔루션을 구현하고자하기 때문에

.

지금 나는 c :/temp 대신 Azure blobstorage에 파일을 저장하고 있습니다. 하지만 대량 복사 할 수 없습니다.

무엇을 제안하십시오.

답변

0

Microsoft.ACE.OLEDB.12.0은 Microsoft Office 설치와 함께 제공되는 드라이버입니다. Azure Machine에는 Office가 설치되어 있지 않습니다. Excel 파일을 읽으려면 또는 ClosedXML과 같이 OpenXML SDK 또는 그 주위의 래퍼를 사용하는 것이 좋습니다. 2007 년 이전의 Excel 파일 형식을 읽어야하는 경우 클라우드에서이를 쉽게 수행 할 수있는 방법이 없습니다.

나머지는 다음과 같습니다. 그 밖의 모든 항목 (BulkInsert 등)이 작동합니다. 엄지 손가락 규칙 - 일반적으로 웹 프로그래밍, 프로그래밍, 고정/하드 코딩 경로에 의존하지 마십시오!

파일을 로컬에 저장 한 다음 대량 복사하십시오.

: 당신이 블롭에서 파일을 저장할 로컬 경로를 선택하기 위해 적어도 두 가지 옵션이 있습니다 어떤 환경 (단지 푸른)에 대한 웹 시나리오의

,

디스크에 고유 한 이름의 0 바이트 임시 파일을 만들고 해당 파일의 전체 경로 인 을 반환합니다.

는 개인적으로 후자를 선호 - Server.MapPath 사용하여 다음과 같이

var localPath = Server.MapPath("~/tmp"); 
var fileName = "name_of_my_file.xlsx"; 
var fullPathToFile = System.IO.Path.Combine(localPath, fileName); 

이 폴더 "TMP"내 웹 응용 프로그램 내에서 쓰기 가능한 파일에 대한 전체 경로를 줄 것이다 내 웹 응용 프로그램 루트에 . 또한 구성 (web.config)을 사용하여 해당 폴더에 대한 모든 외부 액세스를 차단하므로 백엔드 (컨트롤러 작업, 코드 등)에서만 액세스 할 수 있습니다.

전자 (System.IO.Path.GetTempFilename)를 사용하면 시스템 TEMP 폴더 내에 고유 한 파일이 제공됩니다. 어떤 시스템에서나 사용하지 않을 것입니다. TEMP 폴더는 모든 프로세스가 읽고 쓸 수있는 폴더입니다.

그리고 Blob에서 파일을 다운로드하는 방법을 모르면 을 this tutorial에서 읽으십시오.

+0

안녕 astaykov, 이건 내가 작업하는 간단한 POC입니다. 그래서 나는 모든 좋은 습관을 빼먹었습니다. :) – iGod

+0

그래서, 나는 당신의 질문을 이해하지 못한다. 명확하지 않은 것은 무엇입니까? – astaykov

+0

나는 이것이 하늘색 (Microsoft.ACE.OLEDB.12.0)에서 작동하지 않는다고 생각한다. 파일을 로컬에 저장할 수 없다. 그것은 푸른 색 바탕에 저장 될 필요가 있었다. 그리고 blob에있는 동일한 파일의 내용은 대량 업로드를 사용하여 SQL Server에 복사됩니다. – iGod

관련 문제