Pergunta

Em uma de nossas aplicações ASP.NET em C #, vamos dar uma certa coleta de dados (coleção subsônico) e exportá-lo para o Excel. Queremos também importar arquivos do Excel em um formato específico. Eu estou procurando uma biblioteca que eu posso usar para essa finalidade.

Requisitos:

  • arquivos do Excel 2007 (O Excel 2003 suportam mais de 64k linhas? Eu preciso de mais do que isso.)
  • Não requer Excel no servidor
  • Toma uma coleção digitado e, se puder, tenta colocar campos numéricos como numérico em Excel.
  • funciona bem com arquivos grandes (100k para 10M) -. Rápido o suficiente
  • não falha ao exportar GUIDs!
  • Não custa um crapload de dinheiro (nenhuma biblioteca empresa como Aspose). Livre é sempre grande, mas pode ser uma biblioteca comercial.

O que biblioteca você recomenda? Você já usou-o para grandes quantidades de dados? Existem outras soluções?

Agora, eu estou usando uma ferramenta simples que gera HTML que é carregado pelo Excel mais tarde, mas eu estou perdendo algumas capacidades, além de Excel reclama quando nós carregá-lo. Eu não preciso para gerar gráficos ou qualquer coisa assim, apenas exportar dados brutos.

Estou pensando em arquivos CSV planas, mas o Excel é uma exigência do cliente. Eu posso trabalhar com CSV diretamente, se eu tivesse uma ferramenta para converter de e para o Excel. Dada Excel 2007 é um formato de arquivo (e zipado) baseado em XML, eu estou supondo que este tipo de biblioteca deve ser fácil de encontrar. No entanto, o que mais importa para mim são os seus comentários e opiniões.


EDIT: Ironicamente, na minha opinião e na sequência da resposta com a maioria dos votos, o melhor de importação e exportação biblioteca Excel há exportação em tudo. Este não é o caso para todos os cenários, mas é para o meu. arquivos XLS suportam apenas 64k linhas. XLSX suporta até 1M. As bibliotecas livres que eu tentei desempenho característica ruim (um segundo para carregar uma linha quando você tem 200k linhas). Eu não tentei os pagos, como eu sinto que eles são muito caro para o valor que eles oferecem quando tudo que você precisa é de um XLSX rápido <-> rotina de conversão CSV.

Foi útil?

Solução

Eu vou jogar a minha mão na de arquivos CSV planas, mesmo porque você tem o maior controle sobre o código. Apenas certifique-se que você lê nas linhas e processá-los um de cada vez. (Lendo o documento para o fim e divisão vai comer toda a sua memória - mesmo com a escrita, transmiti-lo para fora)

Sim, o usuário terá que guardar como CSV no Excel antes de processá-lo, mas talvez esta limitação pode ser superada por treinamento e fornecendo instruções claras na página?

Finalmente, quando você exporta para o cliente, se você definir o tipo de mime para text / csv, Excel geralmente é mapeado para esse tipo para que ele aparece para o usuário a ser 'um arquivo do Excel'.

Outras dicas

a nova versão do ExcelPackage é aqui http://EPPlus.codeplex.com

Eu ainda estou lutando com a exportação para a função excel desde a minha aplicação deve exportar alguns dados para excel-modelo 2007

este projecto parece-me muito bem, eo desenvolvedor é muito sensível a erros e problemas.

Eu tenho usado ClosedXML e ele funciona muito bem!

ClosedXML torna mais fácil para os desenvolvedores para criar Excel 2007/2010 arquivos. Ele fornece uma boa maneira orientada a objeto para manipular os arquivos (Similar a VBA) sem lidar com as dificuldades de documentos XML. isto pode ser usado por qualquer linguagem .NET como C # e Visual Basic (VB).

SpreadsheetGear for .NET lê e escreve CSV / XLS / XLSX e faz mais.

Você pode ver amostras ASP.NET ao vivo com C # e código fonte VB aqui e descarga um teste gratuito aqui .

É claro que eu acho SpreadsheetGear é a melhor biblioteca de importação / exportação Excel pastas de trabalho no ASP.NET - mas eu sou preconceituoso. Você pode ver que alguns de nossos clientes dizem sobre o lado direito da desta página .

Disclaimer: eu próprio SpreadsheetGear LLC

Eu usei Flexcel no passado e foi ótimo. Mas isso foi mais para a criação e atualização de planilhas do Excel através de programação.

CSV de exportação é simples, fácil de implementar, e rápido. Há um valor de potencial problema observando, no entanto. O Excel (até 2007) não preservar zeros à esquerda em arquivos CSV. Isto irá garble ZIP códigos, os IDs dos produtos, e outros dados textuais contendo valores numéricos. Há um truque que vai fazer Excel importar os valores corretamente (usando delimitadores e valores de prefixo com o sinal =, se bem me lembro, por exemplo .. = "02052", ...). Se você tiver usuários que farão tarefas de pós-processamento com o CSV, eles precisam estar cientes de que eles precisam para alterar o formato de XLS e não salvar o arquivo de volta para CSV. Se o fizerem, os zeros à esquerda serão perdidos para sempre.

Durante anos, tenho usado JExcel para isso, um excelente projeto Java de código aberto. Foi também .NET-able usando J # compilá-lo, e eu também têm tido grande sucesso com ele nesta encarnação. No entanto, recentemente eu precisava para migrar o código para .NET nativa de suportar um 64-bit do IIS aplicativo no qual eu crio saída de Excel. A J # versão de 32 bits não iria carregar.

O código para CSharpJExcel é LGPL e está disponível atualmente em desta página , enquanto nos preparamos para implantá-lo no site da JExcel SourceForge. Ele irá compilar com VS2005 ou VS2008. Os exemplos na documentação original JExcel vai muito bem passar intacto para a versão .NET.

A esperança é útil para alguém aqui fora.

Eu tenho trabalhado com excel jetcell por um longo tempo e pode realmente recomendo. http://www.devtriogroup.com/exceljetcell

  • Produto comercial
  • arquivos Excel XLS e XLSX
  • Com base no próprio motor na net puro.

O seguinte site demonstra como exportar um um 2007 arquivo .xlsx DataTable, DataSet ou List <> em "bom" Excel (em vez de exportar um arquivo .csv, e ficando Excel para abri-lo).

Ele usa as bibliotecas OpenXML, para que não necessidade de ter Excel instalado no seu servidor.

Mikes Knowledge Base - ExportToExcel

Todo o código fonte é dado, gratuitamente , aswell como uma aplicação de demonstração.

É muito fácil para adicionar aos seus próprios aplicativos, você só precisa chamar uma função, passando em um nome de arquivo Excel, e sua fonte de dados:

DataSet ds = CreateSampleData();
string excelFilename = "C:\\Sample.xlsx";
CreateExcelFile.CreateExcelDocument(ds, excelFilename);

Espero que isso ajude.

Verifique a href="http://www.codeplex.com/ExcelPackage" rel="nofollow noreferrer"> projeto , ele usa o formato Office Open XML arquivo de Excel 2007, leve-o de e de código aberto ...

Eu tentei CSharpJExcel e não recomendo, pelo menos não até que haja alguma documentação disponível. Contrariamente aos desenvolvedores comentários é não uma porta nativa em linha reta.

Eu sei que é muito tarde, mas me sinto obrigado a responder Xporter (escrita) e xlReader (leitura) de xPortTools.Net . Testamos algumas bibliotecas e nada chegou perto no caminho do desempenho (eu estou falando sobre a escrita de milhões de linhas em segundos aqui). Não posso dizer o suficiente coisas boas sobre estes produtos!

Você pode usar Microsoft.Jet.OLEDB.4.0

Temos apenas identificou uma necessidade similar. E eu acho que é importante considerar a experiência do usuário.

Nós quase foi desviado ao longo do mesmo:

  1. Preparar / trabalho no arquivo de planilha
  2. Salve o arquivo
  3. Importar arquivo
  4. Trabalhar com dados no sistema

... fluxo de trabalho

Add-in Express permite que você crie um botão dentro de Excel sem tudo o que mucking tedioso sobre com VSTO. Em seguida, o fluxo de trabalho torna-se:

  1. Preparar / trabalho no arquivo de planilha
  2. Importar arquivo (usando o botão dentro Excel )
  3. Trabalhar com dados no sistema

Tenha o código por trás do botão de uso da API do Excel "nativo" (via Add-in Express) e empurre direto no sistema receptor. Você não pode ficar muito mais transparente para o desenvolvedor ou o usuário. Vale a pena considerar.

Há um artigo de boa bonita e biblioteca no CodeProject por Yogesh Jagota:

XML Import-Export Biblioteca Excel

Eu usei-o para exportar dados de consultas SQL e outras fontes de dados para o Excel -. Funciona muito bem para mim

Felicidades

Você pode tentar o seguinte biblioteca, é fácil o suficiente e é apenas um invólucro luz sobre Open XML SDK da Microsoft (você pode até mesmo reutilização formatação, estilos e planilhas mesmo inteiras de arquivo Excel secundário): http://officehelper.codeplex.com

SpreadsheetGear é a melhor biblioteca comercial que temos encontrado e está usando. Nossa empresa faz um monte de técnicas avançadas de importação excel e exportação e SpreadsheetGear suporta lotes de excel avançado apresenta muito além de qualquer coisa que você pode fazer com simples CSV, e é rápido. Não é livre ou muito barato embora mas vale a pena porque o suporte é excelente. Os desenvolvedores vão realmente responder a você, se você tiver um problema.

Como sobre a biblioteca java apache POI. Eu ainda não o usou para o Excel, mas que usá-lo para Word 2007.

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