2016-08-31 2 views
2

나는 내가 Entity Framework 프로젝트에서 테이블 데이터를 Excel 형식으로 변환하는 방법은 무엇입니까?

  • 이 세 테이블이 서로 연결되어 dbo.disease dbo.patient

  • dbo.doctor

    • 라는 이름의 테이블이, 엔티티 프레임 워크 프로젝트가 있습니다.

      의사 이름과 질병 이름이있는 환자 데이터를 Excel 형식 파일로 변환해야합니다.이를 수행하려면 어떻게해야합니까?

      나는

      사람이 단계를 제공 할 수 있습니다 ... 그것을 어떻게 아무 생각이 없다?

      저장 프로 시저를 만들어야합니까? Excel 형식으로 데이터를 변환하는 방법?

      저장 프로 시저를 사용하지 않고 수행 할 수 있습니까?

  • +1

    :

    protected void SetResponseToText(string fileName) { HttpContext.Response.Clear(); HttpContext.Response.AddHeader("content-disposition", "attachment;filename=" + fileName); HttpContext.Response.Charset = ""; HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache); HttpContext.Response.ContentType = "text/csv"; } 

    내보내기 작업을 수행하려면 :

    protected void SetResponseToExcel(string fileName) { HttpContext.Response.Clear(); HttpContext.Response.AddHeader("content-disposition", "attachment;filename=" + fileName); HttpContext.Response.Charset = ""; HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache); HttpContext.Response.ContentType = "application/vnd.ms-excel"; } 

    이 CSV에 대한 응답을 설정하려면 :

    은 (HTML 출력) 엑셀에 대한 응답을 설정하려면 ** (1) ** 올바른 데이터를 검색 - 적절한 EF 쿼리를 사용하면 매우 간단하고 ** (2) ** 데이터를 다음과 같이 변환 할 수 있습니다. Excel에서 읽을 수있는 파일 - 적합한 ** 라이브러리 **를 찾아야합니다. 직접 시도하지 마십시오. 너무 많은 작업. C# 용 Excel 작성 라이브러리는 Google 또는 Bing뿐입니다. –

    +0

    라이브러리가있는 경우 더 집중해야하는 부분이 있습니까? –

    답변

    1

    당신은 무료 및 오픈 소스 라이브러리 EPPlus에게 그것에 대해라고 할 수 있습니다. 여기

    는 링크입니다 : EPPlus-Create advanced Excel spreadsheets

    다음

    그 작업을 수행하는 방법입니다 ..

    1 단계 :

    실행 패키지 관리자 콘솔에서 다음 명령을 :

    PM> 설치 패키지 엡플라스

    2 단계 :

    참고 :

    이 데이터를 내보내는 방법이다 당신은 EF 쿼리를 사용하여 서버에서 검색 한 후 actual datadata를 교체 할 수 있습니다.

    public void ExportListUsingEPPlus() 
         { 
          //this is the data retrieval point you have to replace with your data 
          var data = new[]{ 
           new{ Name="Myname", Email="[email protected]"}, 
           new{ Name="yourname", Email="[email protected]"}, 
           new{ Name="saman", Email="[email protected]"}, 
          }; 
    
          ExcelPackage excel = new ExcelPackage(); 
          var workSheet = excel.Workbook.Worksheets.Add("Sheet1"); 
          workSheet.Cells[1, 1].LoadFromCollection(data, true); 
          using (var memoryStream = new MemoryStream()) 
          { 
           Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
           Response.AddHeader("content-disposition", "attachment; filename=Contact.xlsx"); 
           excel.SaveAs(memoryStream); 
           memoryStream.WriteTo(Response.OutputStream); 
           Response.Flush(); 
           Response.End(); 
          } 
         } 
    
    0

    데이터를 HTML 또는 CSV 형식으로 내보내고 Excel에서 변환을 수행 할 수 있습니다. 이것은 자신의 함정입니다.

    예를 들어 csv를 사용하면 날짜 나 숫자와 같은 텍스트 데이터가있는 경우 Excel에서이를 날짜 또는 숫자로 변환합니다. 이런 일이 생길 때, 데이터를 멈추기 위해 탭 문자를 데이터에 넣습니다.

    그리고 HTML을 사용하여 브라우저에 Excel을 사용하여 열어야한다고 말하면 형식이 Excel이 아니라는 경고 메시지가 나타납니다.

    그럼에도 불구하고이 기술을 사용하여 라이브러리를 사용하지 않고 내 MVC 응용 프로그램에서 간단한 내보내기를 수행했습니다.당신이 필요로하는

    public ActionResult MyExport() 
        { 
         SetResponseToText("MyFilename.csv"); 
         Response.Write(String.Format("\"{0}\",...,{26}", 
          "Heading 1", ..., Environment.NewLine)); 
         Response.Flush(); 
    
         IEnumerable<MyClass> exportData = _MyService.GetMyData(); 
         foreach (var row in exportData) 
         { 
          Response.Write(String.Format("\"{0}\"...,{26}", 
           "\t" + row.Field1, //tab character to force Excel to treat it as text 
           row.Field2, ..., Environment.NewLine)); 
         } 
         Response.Flush(); 
         Response.End(); 
         return null; 
        } 
    
    관련 문제