Pergunta

Eu estou tentando criar Excel 2007 Documentos de programação. Agora, há duas maneiras que eu encontrei:

Atualmente, eu uso ExcelPackage, que tem algumas desvantagens realmente sérias e questões. Como eu não preciso criar planilhas do Excel excessivamente complexas (a coisa mais "complicado" é que eu explicitamente necessário definir um tipo de célula para numérico ou texto), I 'm olhando para Opção 1 seguinte, mas eu só quero saber se existem qualquer outro bem e maneiras suportados para gerar 2007 planilhas do Excel? Pontos de bônus se eles podem ser criados sem ter que salvá-los para o disco rígido, ou seja, gerar e directamente saída-los em um córrego.

.NET 3.0 é o alvo aqui, nenhuma 3,5 bens: (

Editar: Graças até agora. O SDK XML é de fato 3.5 apenas, mas Russian Roulet ... erm ... COM Interop também é algo que eu quero evitar, sempre que possível, especialmente porque Excel 2007 tem um formato de documento um pouco complicado, mas ainda bastante fácil de criar. Eu vou ter um olhar para as várias relações e sugestões postadas.

Foi útil?

Solução

Você pode tentar usar a Escritório Abrir SDK XML. Isso permitirá que você para criar arquivos do Excel na memória usando dizer um MemoryStream e muito mais facilmente do que gerar todo o XML manualmente.

Como Brian Kim apontou, a versão 2.0 do SDK requer .NET 3.5 que você indicou não estava disponível. Versão 1 do SDK também está disponível que suporta NET 3.0. Não é tão completa, mas vai pelo menos ajudar a gerenciar as partes XML do documento e as relações entre eles.

Outras dicas

Eu estou apenas gerar a tabela HTML, que pode ser aberto pelo Excel:

<!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>

Isso funciona bem também como uma fonte de dados para letras de série no Word, trabalha com OpenOffice Calc etc. E é simples morto para gerar.

eu estava indo para comentário no post de BKimmel, mas aparentemente eu não tenho o suficiente para arrefecer pontos ainda.

Se o Excel já está aberto, você pode obter esse irritante "personal.xls já está aberto" mensagem. I tentar obter o primeiro aplicativo. Se isso falhar, então criá-lo:

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

Eu fiz a maioria do trabalho Open XML (xlsx) em SpreadsheetGear for .NET e é muito a partir de um exercício trivial. Eu recomendo usar o Office Open XML SDK ou outra biblioteca como o 3o partido SpreadsheetGear ou um de nossos concorrentes (apenas o Google "SpreadsheetGear" para ver quem são nossos concorrentes são).

SpreadsheetGear for .NET parece para atender às suas necessidades:

  • Funciona com .NET 2.0, 3.0 e .NET .NET 3.5.
  • Suporta a gravação de um riacho com IWorkbook.SaveToStream ou escrever para uma matriz de bytes com IWorkbook.SaveToMemory.
  • Suporta Excel 97-2003 (XLS) pastas de trabalho que é provável que seja a próxima coisa que você for solicitado se você precisa para suportar muitos usuários.

Você pode baixar uma avaliação gratuita, totalmente funcional aqui .

Excel é muito programável através de objetos COM. Eu não tentei, mas isso deve ser uma solução sólida, embora nem rápido ou leve.

O que quer que você acaba fazendo, verifique se a sua solução suporta Unicode. Eu correr em alguns problemas sérios que usam as soluções existentes para escrever arquivos XLS (isto é, pré 2007 arquivos).

Você pode usar o Interop Assemblies primário (a API Office) para gerar programaticamente documentos do Excel -. Eu não quero fazer nada excessivamente complexa usá-los, mas não parece que é a sua exigência

Esta abordagem deve trabalhar para gerar os documentos em memória também.

Aqui estão alguns recursos:

I usado para gerar wordprocessing Markup documentos usando uma biblioteca de funções para criar o XML correto para tabelas e parágrafos.

Eu, então, apenas mudou o tipo MIME para o cabeçalho de resposta para ser um documento do Word e enviou o XML como a resposta para o cliente. Ele quer se abre no seu navegador ou salva como um arquivo.

Há não parece ser o mesmo SDK 2003 para o Excel, embora haja MS Open XML SDK

Cada código-snob ódios vivos VBScript, mas é simples e funciona:

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

Coloque isso em um arquivo de texto, acrescentar um ".vbs" no final e pronto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top