2008-09-30 6 views
14

프로그래밍 방식으로 Excel 2007 문서를 만들려고합니다. ExcelPackage 같은 써드 파티 라이브러리를 사용하여 this post 프로그래밍 방식으로 Excel 2007 시트 만들기

  • 에 설명 된대로
    • 수동으로 XML을 생성 : 지금이 개 내가 찾은 방법이 있습니다.

    현재 ExcelPackage를 사용하고 있는데, 여기에는 몇 가지 심각한 단점과 문제점이 있습니다. 지나치게 복잡한 Excel 시트를 만들 필요가 없으므로 (가장 복잡한 "숫자"또는 "텍스트"로 셀 유형을 설정해야 함) 다음 옵션 1을 찾고 있습니다. Excel 2007 시트를 생성하는 다른 좋은 방법과 지원되는 방법은 무엇입니까? 보너스 포인트 하드 드라이브에 저장하지 않고 생성 할 수있는 경우 (즉, 생성하여 직접 스트림으로 출력). . 덕분에 지금까지 XML의 SDK는 실제로 3.5이지만, 러시아어 Roulet은 ... 음 ... COM 상호 운용성은 다음과 같습니다

    .NET 3.0

    에는 3.5 선 (善) :(

    편집, 여기에 대상입니다 특히 Excel 2007은 다소 복잡하지만 여전히 쉽게 문서 형식을 만들 수 있기 때문에 가능한 한 피하려고합니다.

  • 답변

    9

    Office Open XML SDK을 사용해 볼 수 있습니다. 이렇게하면 MemoryStream이라고 말하면서 메모리에 Excel 파일을 만들 수 있으며 모든 XML을 직접 생성하는 것보다 훨씬 쉽습니다.

    Brian Kim이 지적했듯이 SDK 버전 2.0에는 사용할 수 없다고 명시한 .NET 3.5가 필요합니다. .NET 3.0을 지원하는 SDK의 Version 1도 사용할 수 있습니다. 완전하지는 않지만 적어도 문서의 XML 부분과 그 관계를 관리하는 데 도움이 될 것입니다.

    +0

    .net 3.5가 필요합니다. –

    +0

    좋은 지적, 수정 됨. –

    0

    나는 테이블과 단락을위한 올바른 XML을 만들기위한 함수 라이브러리를 사용하여 Wordprocessing Markup 개의 문서를 생성하는 데 사용되었습니다.

    그런 다음 Response 헤더의 MIME 형식을 워드 문서로 변경하고 XML을 클라이언트에 대한 응답으로 보냈습니다. 브라우저에서 열거 나 파일로 저장됩니다. MS Open XML SDK

    0

    Excel에서 COM 개체를 통해 매우 스크립트 작성이 있지만

    는 엑셀 같은 2003 SDK있을 것 같지 않습니다. 나는 그것을 시도하지는 않았지만, 빠르고 견고하지는 않더라도 견고한 해결책이되어야한다.

    무슨 일을 하던지, 솔루션에서 유니 코드를 지원하는지 확인하십시오. 필자는 xls 파일을 작성하기위한 기존 솔루션 (즉, 2007 년 이전 파일)을 사용하여 몇 가지 심각한 문제를 겪었습니다.

    +2

    서버에서 Excel의 COM 자동화는 매우 희박 할 수 있습니다. Microsoft는 데스크톱에서만이를 지원합니다. –

    0

    주 Interop 어셈블리 (Office API)를 사용하여 프로그래밍 방식으로 Excel 문서를 생성 할 수 있습니다. 이러한 문서를 사용하여 지나치게 복잡한 작업을 수행하고 싶지는 않지만 요구 사항은 아닙니다.

    이 방법은 메모리에도 문서를 생성하는 데 효과적입니다.여기

    몇 가지 리소스입니다 :

    +0

    피아노를 피하십시오 ... 그렇습니다. .ss의 Pain과 Primary Interop Ass-emblies의 우연은 아닙니다. 나를 믿어 라, 나는 아직도 상처를 느낄 수있다. –

    0

    (MSDN)에서 모든 코드 속물 살아 VBScript를 싫어하지만, 간단하고 그것을 작동 :

    Set myxlapp = CreateObject("Excel.Application") 
    Set mywb = myxlapp.Workbooks.Add 
    myxlapp.Visible = true 
    

    텍스트 파일에서 끝에 ".vbs"를 추가하고 presto.

    1

    나는 BKimmel의 글에 댓글을 달았지만, 분명히 아직 멋진 점은 없다.

    Excel이 이미 열려 있으면 해당 성가신 "personal.xls is already open"메시지가 나타날 수 있습니다. 나는 앱을 먼저 얻으려고 노력한다. 실패 할 경우, 다음을 만듭니다

    On Error Resume Next 
    Set myxlApp = GetObject(, "Excel.Application") 
    If Err.Number <> 0 Then 
        Err.Clear 
        Set myxlApp = CreateObject("Excel.Application") 
        If Err.Number <> 0 Then 
        ' return False, show message, etc. 
        End If 
    End If 
    
    2

    을 그냥 Excel에서 열 수있는 HTML 테이블을 생성하고있어이 Word에서 시리얼 문자에 대한 데이터 소스로도 잘 작동

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" 
         "http://www.w3.org/TR/html4/strict.dtd"> 
    
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>Wnioski</title> 
    <style type="text/css"> 
    <!-- 
    br { mso-data-placement: same-cell; } 
    td { mso-number-format: \@; mso-displayed-decimal-separator: "."; } 
    --> 
    </style> 
    
    <table> 
    <tr style="height:15.0pt"> 
    <td style="mso-number-format: general">474</td> 
    <td>474</td> 
    
    <tr> 
    <td>data2</td> 
    <td>data3</td> 
    
    <tr> 
    <td style="mso-number-format: &quot;yyyy-mm-dd&quot;">2008-10-01</td> 
    <td style="mso-number-format: standard">0.00</td> 
    
    <tr> 
    <td style="mso-number-format: general">line1<br>line2<br>line3</td> 
    <td></td> 
    
    </table> 
    

    을 OpenOffice calc 등으로 작동합니다. 그리고 생성하기가 쉽지 않습니다.

    +0

    은 그 예에서 몇 가지 태그가 누락 된 것 같습니다 ... ;-) –

    +0

    은 필요하지 않습니다. 이 코드를 에 붙여 넣으십시오. http://validator.w3.org/#validate_by_input 그래서 직접 확인하십시오.도 필수는 아니지만 Excel이 더 잘 작동합니다. – Tometzky

    1

    Open XML (xlsx)의 대부분은 에서 작동 했으므로 사소한 문제는 아닙니다. Office Open XML SDK 또는 SpreadsheetGear 나 경쟁 업체 중 하나와 같은 타사 라이브러리를 사용하는 것이 좋습니다 (Google "SpreadsheetGear"만 사용하면 경쟁 업체를 확인할 수 있습니다).

    .NET 용하는 SpreadsheetGear는 당신의 필요를 충족 것 같다 :

    • 작품을 .NET 2.0, .NET 3.0 및 .NET 3.5.
    • IWorkbook.SaveToStream을 사용하여 스트림에 쓰기를 지원하거나 IWorkbook.SaveToMemory가있는 바이트 배열에 쓰기를 지원합니다.
    • 매우 많은 사용자를 지원해야하는 경우 다음 번 질문 일 가능성이 높은 Excel 97-2003 (xls) 통합 문서를 지원합니다.

    무료로 완전한 기능 평가 here을 다운로드 할 수 있습니다.

    관련 문제