23 votes

.NET Excel une Bibliothèque de lecture/écriture .les fichiers xls

Je suis à la recherche d'un Excel bibliothèque qui lit/écrit .xls (pas .xlsx) des fichiers.

Je suis en utilisant excellibrary mais c'est très buggé et je ne semble pas possible d'ouvrir les fichiers que j'ai créer. Le problème est connu depuis près d'un an et n'a pas été encore fixée.

J'ai vu dans un autre thread, quelqu'un a suggéré EPPlus, mais qui ne fonctionne qu'avec la 2007/2010 .format xlsx.

J'ai utilisé Koogra dans le passé, et a été très heureux avec elle, mais je crois qu'il peut seulement lire... pas écrire.

Si vous connaissez une bibliothèque, s'il vous plaît laissez-moi savoir comment ça s'appelle.

Edit: Je suis très heureux pour créer mon fichier Excel avec la fonction intégrée de Microsoft.Bureau de.Interop.Excel si nécessaire, mais ma machine a Office 2007 et la cible que des machines à Office 2003. J'ai remarqué que j'ai 2 versions de fichier pour que la bibliothèque: 12, et 14. J'ai vérifié la version d'Excel sur les ordinateurs cibles et c'est 11.8169.8172 - je suis en supposant que le built-in Excel interop ne fonctionnera pas sur la cible?

36voto

Leniel Macaferi Points 38324

Je le recommande NPOI. NPOI est GRATUIT et fonctionne exclusivement avec .Les fichiers XLS. Il m'a beaucoup aidé.

Détail: vous n'avez pas besoin d'avoir Microsoft Office installée sur votre machine pour travailler avec .Les fichiers XLS si vous utilisez NPOI.

Vérifier ces billets de blog:

La création de feuilles de calcul Excel .XLS et .XLSX en C#

NPOI avec Excel de Tableau et de Graphique dynamique

[Mise à JOUR]

NPOI 2.0 ajout du support pour DOCX, XLSX et.

Vous pouvez en lire plus à ce sujet ici:

NPOI 2.0 série de postes programmées

7voto

BiggsTRC Points 10362

Est-il une raison pourquoi vous ne pouvez pas utiliser la connexion ODBC Excel à lire et à écrire à Excel? Par exemple, j'ai utilisé le code suivant pour lire à partir d'un fichier Excel, ligne par ligne, comme une base de données:

private DataTable LoadExcelData(string fileName)
{
  string Connection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1\";";

  OleDbConnection con = new OleDbConnection(Connection);

  OleDbCommand command = new OleDbCommand();

  DataTable dt = new DataTable(); OleDbDataAdapter myCommand = new OleDbDataAdapter("select * from [Sheet1$] WHERE LastName <> '' ORDER BY LastName, FirstName", con);

  myCommand.Fill(dt);

  Console.WriteLine(dt.Rows.Count);

  return dt;
}

Vous pouvez écrire à l'Excel de la base de données" de la même manière. Comme vous pouvez le voir, vous pouvez sélectionner le numéro de la version à utiliser de sorte que vous pouvez revenir Excel versions de la machine avec Excel 2003. En fait, la même chose est vraie pour l'utilisation de l'Interopérabilité. Vous pouvez utiliser la version la plus basse et il devrait travailler avec Excel 2003, même si vous avez seulement une version plus récente sur votre PC de développement.

-2voto

Bonnie Cornell Points 17

Vous pourriez envisager de l'outil 3ème partie qui a appelé Excel Jetcell .NET composant pour lire/écrire des fichiers excel:

Exemple C#

// Create New Excel Workbook
ExcelWorkbook Wbook = new ExcelWorkbook();
ExcelCellCollection Cells = Wbook.Worksheets.Add("Sheet1").Cells;

Cells["A1"].Value = "Excel writer example (C#)";
Cells["A1"].Style.Font.Bold = true;
Cells["B1"].Value = "=550 + 5";

// Write Excel XLS file
Wbook.WriteXLS("excel_net.xls");

VB.NET exemple

' Create New Excel Workbook
Dim Wbook As ExcelWorkbook = New ExcelWorkbook()
Dim Cells As ExcelCellCollection = Wbook.Worksheets.Add("Sheet1").Cells

Cells("A1").Value = "Excel writer example (C#)"
Cells("A1").Style.Font.Bold = True
Cells("B1").Value = "=550 + 5"

' Write Excel XLS file
Wbook.WriteXLS("excel_net.xls")

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X