문제

프로그래밍 방식으로 Excel 2007 문서를 만들려고합니다. 이제 내가 찾은 두 가지 방법이 있습니다.

  • 요약 된대로 수동으로 XML을 생성합니다 이 게시물
  • 제 3 자 라이브러리를 사용합니다 ExcelPackage.

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

.NET 3.0은 여기서 목표입니다. 3.5 장점은 없습니다 :(

편집하다: 지금까지 감사합니다. XML SDK는 실제로 3.5이지만 러시아 룰렛 ... ERM ... COM Interop은 또한 가능할 때마다 피하고 싶은 것입니다. 특히 Excel 2007은 다소 복잡하지만 여전히 문서 형식을 만들기가 쉽기 때문입니다. 게시 된 다양한 링크와 힌트를 살펴 보겠습니다.

도움이 되었습니까?

해결책

당신은 그것을 사용해 볼 수 있습니다 Office Open XML SDK. 이것은 당신이 say a를 사용하여 메모리에서 Excel 파일을 만들 수 있습니다. MemoryStream 그리고 모든 XML을 손으로 생성하는 것보다 훨씬 쉽습니다.

Brian Kim이 지적했듯이 SDK의 버전 2.0은 귀하가 언급 한 .NET 3.5를 필요로하지 않았습니다. 버전 1 .NET 3.0을 지원하는 SDK도 사용할 수 있습니다. 완전하지는 않지만 최소한 문서의 XML 부분과 그 간의 관계를 관리하는 데 도움이됩니다.

다른 팁

Excel이 열 수있는 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의 게시물에 대해 언급하려고했지만 아직 충분히 멋진 포인트가 없습니다.

Excel이 이미 열려 있다면 성가신 "personal.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) 작업을 수행했습니다. .NET 용 스프레드 시트 기어 그리고 그것은 사소한 운동과는 거리가 멀다. 사무실 Open XML SDK 또는 Spreadsheetgear 또는 경쟁 업체 중 하나와 같은 다른 타사 라이브러리를 사용하여 경쟁 업체가 누구인지 확인하는 것이 좋습니다.

.NET 용 스프레드 시트 기어는 귀하의 요구를 충족시키는 것 같습니다.

  • .NET 2.0, .NET 3.0 및 .NET 3.5에서 작동합니다.
  • iWorkbook.savetoStream을 사용하여 스트림에 쓰기 또는 iWorkbook.savetomemory가있는 바이트 어레이에 쓰기를 지원합니다.
  • Excel 97-2003 (XLS) 통합 문서를 지원합니다.이 통합 문서는 매우 많은 사용자를 지원 해야하는지 여부를 다음에 요청할 수 있습니다.

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

Excel은 COM 객체를 통해 매우 스크립트가 가능합니다. 나는 그것을 시도하지 않았지만, 이것은 빠르거나 가볍지 만 견고한 솔루션이어야합니다.

결국 무엇을 하든지 솔루션이 유니 코드를 지원하는지 확인하십시오. XLS 파일을 작성하기 위해 기존 솔루션을 사용하여 몇 가지 심각한 문제가 발생합니다 (즉, 2007 년 Pre Files).

기본 인터 로프 어셈블리 (Office API)를 사용하여 프로그래밍 방식으로 Excel 문서를 생성 할 수 있습니다. 나는 그것들을 사용하여 지나치게 복잡한 일을하고 싶지 않지만, 그것은 당신의 요구 사항이라고 들리지 않습니다.

이 접근법은 메모리에서 문서를 생성하는 데 효과적입니다.

몇 가지 리소스는 다음과 같습니다.

나는 생성하곤했다 워드 프로세싱 마크 업 테이블 및 단락에 대한 올바른 XML을 생성하기위한 기능 라이브러리를 사용하는 문서.

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

Excel에 대한 2003 SDK가없는 것 같습니다. MS Open XML SDK

모든 Code-Snob Alive는 vbscript를 싫어하지만 간단하고 작동합니다.

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

텍스트 파일에 넣고 끝에 ".vbs"를 추가하고 프레스토링하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top