Em um de nossos aplicativos ASP.NET em C #, pegamos uma certa coleta de dados (coleção SubSonic) e exportamos para o Excel. Também queremos importar arquivos do Excel em um formato específico. Estou procurando uma biblioteca que possa usar para esse fim.
Requisitos:
- Arquivos do Excel 2007 (O Excel 2003 suporta mais de 64k linhas? Preciso de mais do que isso.)
- Não requer o Excel no servidor
- Toma uma coleção digitada e, se possível, tenta colocar campos numéricos como numéricos no Excel.
- Funciona bem com arquivos grandes (100k a 10M) - rápido o suficiente.
- Não falha ao exportar GUIDs!
- Não custa um upload de dinheiro (nenhuma biblioteca corporativa como a Aspose). Gratuito é sempre ótimo, mas pode ser uma biblioteca comercial.
Qual biblioteca você recomenda? Você o usou para grandes quantidades de dados? Existem outras soluções?
No momento, estou usando uma ferramenta simples que gera HTML que é carregado pelo Excel posteriormente, mas estou perdendo alguns recursos, e o Excel reclama quando o carregamos. Não preciso gerar gráficos ou algo assim, apenas exportar dados brutos.
Estou pensando em arquivos CSV simples, mas o Excel é um requisito do cliente. Eu posso trabalhar com CSV diretamente, se eu tivesse uma ferramenta para converter de e para o Excel. Como o Excel 2007 é um formato de arquivo baseado em xml (e compactado), acho que esse tipo de biblioteca deve ser fácil de encontrar. No entanto, o que mais importa para mim são seus comentários e opiniões.
Edição: Ironicamente, na minha opinião e após a resposta com mais votos, a melhor biblioteca de importação e exportação do Excel não é de exportação. Este não é o caso de todos os cenários, mas é o meu. Os arquivos XLS suportam apenas 64k linhas. XLSX suporta até 1 milhão. As bibliotecas gratuitas que eu tentei apresentam desempenho ruim (um segundo para carregar uma linha quando você tem 200 mil linhas). Não experimentei os pagos, pois sinto que eles são muito caros pelo valor que oferecem quando tudo que você precisa é de uma rotina rápida de conversão XLSX <-> CSV.
fonte
Respostas:
Vou jogar minha mão em arquivos csv simples, mesmo que você tenha o maior controle sobre o código. Apenas certifique-se de ler as linhas e processá-las uma de cada vez (a leitura do documento até o fim e a divisão consumirão toda a sua memória - o mesmo que a escrita e a transmissão).
Sim, o usuário precisará salvar como CSV no Excel antes que você possa processá-lo, mas talvez essa limitação possa ser superada treinando e fornecendo instruções claras na página?
Por fim, ao exportar para o cliente, se você definir o tipo MIME como text / csv, o Excel geralmente será mapeado para esse tipo, para que pareça ao usuário 'um arquivo do Excel'.
fonte
Eu descobri o Open XML SDK desde a minha resposta original. Ele fornece classes fortemente tipadas para objetos de planilha, entre outras coisas, e parece ser bastante fácil de trabalhar. Vou usá-lo para relatórios em um dos meus projetos. Infelizmente, a versão 2.0 não deve ser lançada até o final de 2009 ou 2010.
fonte
a nova versão do ExcelPackage está aqui http://EPPlus.codeplex.com
Ainda estou lutando com a função exportar para excel, pois meu aplicativo deve exportar alguns dados para o excel-template 2007
esse projeto parece bom para mim e o desenvolvedor responde muito bem a bugs e problemas.
fonte
Estou usando o ClosedXML e funciona muito bem!
fonte
SpreadsheetGear para .NET lê e grava CSV / XLS / XLSX e faz mais.
Você pode ver exemplos ao vivo do ASP.NET com código-fonte C # e VB aqui e baixar uma avaliação gratuita aqui .
É claro que acho que o SpreadsheetGear é a melhor biblioteca para importar / exportar pastas de trabalho do Excel no ASP.NET - mas sou tendenciosa. Você pode ver o que alguns de nossos clientes dizem no lado direito desta página .
Isenção de responsabilidade: Eu possuo SpreadsheetGear LLC
fonte
NPOI para Excel 2003 Open Source http://www.leniel.net/2009/07/creating-excel-spreadsheets-xls-xlsx-c.html
fonte
Eu usei Flexcel no passado e foi ótimo. Mas isso foi mais para criar e atualizar programaticamente planilhas do Excel.
fonte
A exportação de CSV é simples, fácil de implementar e rápida. Há um problema em potencial que vale a pena notar, no entanto. O Excel (até 2007) não preserva zeros à esquerda nos arquivos CSV. Isso exibirá códigos postais, códigos de produto e outros dados textuais que contêm valores numéricos. Há um truque que fará o Excel importar os valores corretamente (usando delimitadores e valores de prefixo com o sinal =, se bem me lembro, por exemplo, .., = "02052", ...). Se você possui usuários que farão tarefas de pós-processamento com o CSV, eles precisam estar cientes de que precisam alterar o formato para XLS e não salvar o arquivo novamente no CSV. Se o fizerem, os zeros à esquerda serão perdidos para sempre.
fonte
Durante anos, tenho usado o JExcel para isso, um excelente projeto Java de código aberto. Também era capaz de .NET usando o J # para compilá-lo, e também tive grande sucesso com ele nesta encarnação. No entanto, recentemente, precisei migrar o código para o .NET nativo para dar suporte a um aplicativo IIS de 64 bits no qual crio a saída do Excel. A versão J # de 32 bits não seria carregada.
O código para CSharpJExcel é LGPL e está disponível atualmente neste página, enquanto nos preparamos para implantá-lo no site JExcel SourceForge. Ele será compilado com o VS2005 ou VS2008. Os exemplos na documentação original do JExcel passarão intactos para a versão .NET.
Espero que seja útil para alguém aqui fora.
fonte
Eu trabalhei com o Excel jetcell por um longo tempo e posso realmente recomendá-lo. http://www.devtriogroup.com/exceljetcell
fonte
O site a seguir demonstra como exportar um DataTable, DataSet ou List <> para um arquivo .xlsx "adequado" do Excel 2007 (em vez de exportar um arquivo .csv e fazer com que o Excel o abra).
Ele usa as bibliotecas OpenXML, portanto você não precisa ter o Excel instalado no seu servidor.
Base de Conhecimento Mikes - ExportToExcel
Todo o código-fonte é fornecido, gratuitamente , além de um aplicativo de demonstração.
É muito fácil adicionar aos seus próprios aplicativos, basta chamar uma função, passando um nome de arquivo do Excel e sua fonte de dados:
Espero que isto ajude.
fonte
Verifique o projeto ExcelPackage , ele usa o formato de arquivo Office Open XML do Excel 2007, é leve e de código aberto ...
fonte
Eu tentei o CSharpJExcel e não o recomendaria, pelo menos até que exista alguma documentação disponível. Ao contrário dos comentários dos desenvolvedores, não é uma porta nativa direta.
fonte
Sei que é tarde demais, mas me sinto obrigado a responder xPorter (gravação) e xlReader (leitura) do xPortTools.Net . Testamos várias bibliotecas e nada chegou perto do desempenho (estou falando de escrever milhões de linhas em segundos aqui). Não posso dizer coisas boas o suficiente sobre esses produtos!
fonte
Você pode usar
Microsoft.Jet.OLEDB.4.0
fonte
Acabamos de identificar uma necessidade semelhante. E acho importante considerar a experiência do usuário.
Nós quase fomos desviados da mesma forma:
... fluxo de trabalho
O Add-in Express permite criar um botão no Excel sem toda essa chatice tediosa com o VSTO. Em seguida, o fluxo de trabalho se torna:
Faça com que o código por trás do botão use a API do Excel "nativa" (via Add-in Express) e envie diretamente para o sistema do destinatário. Você não pode ficar muito mais transparente para o desenvolvedor ou o usuário. Vale a pena considerar.
fonte
Há um bom artigo e biblioteca no CodeProject por Yogesh Jagota:
Biblioteca de Importação e Exportação XML do Excel
Usei-o para exportar dados de consultas SQL e outras fontes de dados para o Excel - funciona muito bem para mim.
Felicidades
fonte
Você pode tentar a seguinte biblioteca, é fácil e é apenas um invólucro leve do Open XML SDK da Microsoft (você pode até reutilizar formatação, estilos e até planilhas inteiras do arquivo secundário do Excel): http://officehelper.codeplex.com
fonte
Spreadsheetgear é a melhor biblioteca comercial que encontramos e estamos usando. Nossa empresa faz muitas importações e exportações avançadas de Excel e o Spreadsheetgear suporta muitos recursos avançados do Excel, muito além de qualquer coisa que você possa fazer com um CSV simples, e é rápido. Não é gratuito ou muito barato, mas vale a pena porque o suporte é excelente. Os desenvolvedores realmente responderão a você se você encontrar um problema.
fonte
Que tal a biblioteca java apache POI. Eu não o usei para o Excel, mas o usei para o Word 2007.
fonte