2012-06-25 2 views
1

C#에서 Excel 문서를 읽을 수있는 라이브러리를 찾고 있는데과 셀 서식과 스프레드 시트의 데이터를 읽을 수 있어야합니다. . 엑셀 문서를 읽는 많은 대안을 나열한 this useful question이 있지만 여기서 제공되는 많은 솔루션은 셀 속성 (예 : 글꼴, 배경색 등)이 아닌 스프레드 시트의 내용 만 읽을 수 있도록합니다. 내 특정 문제에 대한, 그러나, 많은 셀 서식이 포함 된 문서를 읽을 필요가 있고이 서식 정보를 읽을 수 있어야합니다. 내가 읽기에 필요하고C#에서 Excel 데이터 및 셀 서식 지정하기

엑셀 문서는 XLS 문서, 그래서이 단계에서 XLSX을 읽을 필요가 없습니다. Excel이 설치되지 않은 상태에서 서버에서 사용할 수있는 라이브러리를 찾고 있습니다. 따라서 독립 실행 형 솔루션이어야하며 바람직하게는 오픈 소스 여야합니다.

누구나 xls 문서에서 셀 서식 정보를 읽는 데 경험이 있고이 작업을 수행하는 데 도움이되는 라이브러리를 제안 할 수 있습니까?

업데이트 : 때문에 그것에 대해 읽은 내용에서 ClosedXml를 사용하여보고하고

는, 내가 필요로하고있는 기능을 제공 할 것으로 보인다.

http://closedxml.codeplex.com/wikipage?title=Finding%20and%20extracting%20the%20data&referringTitle=Documentation

을하고 문제없이 Excel 문서의 내용을 읽을 수 있었다 :이 샘플 코드에서 일하고 있습니다. 이 코드의 Categories 예제를 사용했지만 categoryname 셀 중 두 가지 서식을 배경색으로 지정했습니다. ,이 정의되어있는 경우 배경색이 특정 셀

  • 에 정의 된 채우기 의 색상을 검색 할 경우

    • : 이제 내가 무엇을 ClosedXml와 함께 할 시도하고 결정이다

      : 기입 다음

    내가 사용하려고 몇몇 코드 (16 진수 값을 할 것입니다)
    // Get all categories 
    while (!categoryRow.Cell(coCategoryId).IsEmpty()) 
    { 
        IXLCell categoryName = categoryRow.Cell(coCategoryName); 
        try 
        { 
         categories.Add(categoryName.GetString() + " " + categoryName.Style.Fill.BackgroundColor.Color.ToHex()); 
        } 
        catch 
        { 
         categories.Add(categoryName.GetString() + " None"); 
        } 
        categoryRow = categoryRow.RowBelow(); 
    } 
    

    그러나 코드는

    categoryName.Style.Fill.BackgroundColor.Color.ToHex() 
    

    항상 expection 던졌습니다 "주어진 키가 사전에 존재하지했습니다.", 배경색이 정의 된 셀의 경우에도 마찬가지입니다. 누구나 ClosedXml로이 작업을 수행하는 방법에 대한 아이디어가 있습니까?

  • +0

    를 사용할 수 있습니다. –

    +0

    감사합니다, AnatoliiG. 나는 같은 결론에 도달했고 이미 이것에 대한 별도의 질문을했다. 질문은 여기에있다 : http://stackoverflow.com/questions/11198653/cannot-convert-theme-color-to-color-in-closedxml – BruceHill

    +0

    나는 ClosedXml이 당신에게 적합하다는 것에 대해 기쁘다. ;) –

    답변

    4

    OpenXml 및 해당 래퍼 - ClosedXml은 많은 유용한 기능을 제공합니다.

    +1

    +1 http://closedxml.codeplex.com/ – kenny

    0

    무료로 할 필요가없는 경우 난 강력하게 내가 부분적으로 귀하의 요구 사항을 교묘히 회피하고 Aspose.Cells

    0

    추천하지만 당신은> xls- 변환 서버에 XLSX 다음 XML을 (XPath를) 검색 할 수 있습니다. 어쩌면 xls-> openoffice calc가 거의 동일 할 수 있습니다.

    0

    당신은 내가는`Color.ToHex()`예외에 대한 별도의 질문을 더 편리 할 것이라고 생각 Microsoft.Office.Interop.Excel

    var workbookPath = ""; 
    var worksheetName = ""; 
    
    var applicationClass = new Application(); 
    var workbook = applicationClass.Workbooks.Open(workbookPath, Type.Missing, Type.Missing,  Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing , Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 
    
    var worksheet = workbook.GetWorksheet(worksheetName); 
    var usedRange = worksheet.UsedRange; 
    var columnRangeIndexColumn= 1; 
    
    
          for (int i = beginIndexRow; i <= usedRange.Rows.Count; i++) 
          { 
           var columnRange = usedRange.Cells[i, columnRangeIndexColumn]; 
           var value= columnRange.Value2; 
          } 
    
    
    
    
    use this extension 
    
    public static Worksheet GetWorksheet(this Workbook value, string name) 
         { 
          foreach (Worksheet worksheet in value.Worksheets) 
          { 
           if (worksheet.Name == name) 
           { 
            return worksheet; 
           } 
          } 
          return value.ActiveSheet; 
         } 
    
    +0

    어떻게 셀 포맷을 얻고 있습니까? –