programing

프로그래밍 방식으로 Excel 2007 시트 만들기

oldcodes 2023. 10. 6. 21:59
반응형

프로그래밍 방식으로 Excel 2007 시트 만들기

Excel 2007 Documents를 프로그래밍 방식으로 만들려고 합니다.제가 찾은 방법은 두 가지입니다.

  • 이 게시물에 요약된 대로 XML 수동 생성
  • Excel Package와 같은 타사 라이브러리를 사용합니다.

현재 저는 엑셀패키지를 사용하고 있는데, 엑셀패키지는 매우 심각한 단점과 문제점이 있습니다.지나치게 복잡한 Excel 시트를 만들 필요가 없기 때문에(가장 "복잡한" 것은 셀 유형을 숫자 또는 텍스트로 설정해야 한다는 것입니다) 다음으로 옵션 1을 찾고 있지만 Excel 2007 시트를 생성할 수 있는 다른 좋은 지원 방법이 있는지 궁금합니다.보너스 포인트는 하드 드라이브에 저장할 필요 없이 생성할 수 있는 경우, 즉 생성하여 스트림에 직접 출력합니다.

.net 3.0이 여기 대상입니다. 3.5 goodness :(

편집: 지금까지 감사했습니다.XML SDK는 3.5밖에 없지만 러시안 룰렛은...음...COM Interop은 가능하면 피하고 싶은 것이기도 한데, 특히 Excel 2007은 다소 복잡하지만 여전히 문서 형식을 만들기가 쉽기 때문입니다.게시된 다양한 링크와 힌트를 보겠습니다.

Office Open XML SDK를 사용해 볼 수 있습니다.이것은 당신이 say a를 사용하여 메모리에 엑셀파일을 만들수 있게 해줄것입니다.MemoryStream모든 XML을 수작업으로 생성하는 것보다 훨씬 쉽습니다.

Brian Kim이 지적한 대로 SDK 버전 2.0이 필요합니다.말씀하신 NET 3.5는 사용할 수 없습니다.를 지원하는 SDK 버전 1도 사용할 수 있습니다.NET 3.0.이것은 완벽하지는 않지만 최소한 문서의 XML 부분과 그들 사이의 관계를 관리하는 데는 도움이 될 것입니다.

나는 단지 엑셀로 열 수 있는 HTML 테이블을 생성하고 있습니다.

<!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 등과도 잘 작동합니다.그리고 그것은 생성하기 아주 간단합니다.

BKimmel의 게시물에 댓글을 달려고 했는데, 아직 SO cool point가 부족한 것 같습니다.

만약 엑셀이 이미 열려있다면, 당신은 그 성가신 "개인적인" 것을 얻을 수 있습니다.xls는 이미 열려 있습니다"라는 메시지가 표시됩니다.저는 먼저 앱을 받아 봅니다.실패할 경우 다음과 같이 만듭니다.

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

대부분의 Open XML(xlsx) 작업은 SpreadsetGear for에서 수행했습니다.NET과 그것은 사소한 운동과는 거리가 멉니다.Office Open XML SDK나 SpreadsetGear와 같은 다른 타사 라이브러리 또는 경쟁업체를 사용하는 것이 좋습니다(경쟁업체가 누구인지 확인하려면 Google "SpreadsheetGear"만 사용).

스프레드시트Gear for.NET은 고객의 요구사항을 충족시켜 줄 것으로 보입니다.

  • 함께 작업합니다.NET 2.0, .NET 3.0 및 .NET 3.5.
  • I 워크북으로 스트림에 쓰기를 지원합니다.SaveToStream 또는 I 워크북으로 바이트 배열에 쓰기.메모리에 저장합니다.
  • Excel 97-2003(xls) 워크북을 지원합니다. 이는 매우 많은 사용자를 지원해야 할 경우 다음으로 요구되는 사항입니다.

여기에서 완전한 기능을 갖춘 무료 평가를 다운로드 받을 수 있습니다.

Excel은 COM 객체를 통해 스크립트가 가능합니다.시도해 본 적은 없지만, 빠르고 가볍지는 않지만 확실한 해결책이 될 것입니다.

어떤 일을 하든 솔루션이 유니코드를 지원하는지 확인합니다.xls 파일(즉, 2007년 이전 파일)을 작성하기 위해 기존 솔루션을 사용하는 몇 가지 심각한 문제에 봉착했습니다.

Excel 문서를 프로그래밍 방식으로 생성하려면 Primary Interop Assembly(Office API)를 사용할 수 있습니다. 이 문서를 사용하여 지나치게 복잡한 작업을 수행하고 싶지는 않지만 필요한 작업은 아닌 것 같습니다.

이 방법은 메모리에 있는 문서를 생성할 때도 사용할 수 있습니다.

다음은 몇 가지 리소스입니다.

저는 표와 문단을 위한 정확한 XML을 작성하기 위한 함수 라이브러리를 사용하여 Wordprocessing Markup 문서를 작성하곤 했습니다.

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

MS Open XML SDK가 있지만 Excel의 2003 SDK는 없는 것 같습니다.

살아있는 모든 코드스노브들은 vbscript를 싫어하지만 간단하며 작동합니다.

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

그것을 텍스트 파일에 넣고, 끝에 ".vbs"를 붙여서 presto.

언급URL : https://stackoverflow.com/questions/153248/programmatically-creating-excel-2007-sheets

반응형