Quelqu'un peut-il me suggérer comment lire les fichiers Excel en C# en utilisant ado.net en mode déconnecté.Mon fichier Excel est assez grand et ne peut pas être conservé en mémoire.Veuillez suggérer une méthode de chargement des données dans un jeu de données. pour l'instant je suis en train de lire les à l'aide d'Excel = Microsoft.Office.Interop.Excel et en ajoutant la référence Excel (com), puis en utilisant des objets comme plage etc.Importer des fichiers Excel dans C#
0
A
Répondre
1
Peut être est-ce ce que vous cherchez http://exceldatareader.codeplex.com/
+0
Je ne pouvais pas faire fonctionner la méthode OleDb sur Windows7, mais cela fonctionne comme un charme. Merci. – willem
1
Id dire vous y connecter avec ADO et le traiter comme une base de données: http://www.connectionstrings.com/excel
0
Voici ce que j'utilise pour lire les données à partir d'une feuille Excel:
private DbDataReader ReadExcelSheet(string file, string sheet)
{
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + file + ";Extended Properties=Excel 8.0;";
DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb");
DbConnection connection = factory.CreateConnection();
connection.ConnectionString = connStr;
DbCommand command = connection.CreateCommand();
string query = BuildSelectQuery(sheet, names_mapping);//you need column names here
command.CommandText = query;
connection.Open();
DbDataReader dr = command.ExecuteReader();
return dr;
}
1
Voici un exemple de ce que j'utilise qui pourrait être utile pour quiconque souhaite obtenir des données à partir d'une feuille de calcul Excel.
- Il charge chaque feuille de calcul dans un
DataTable
dans unDataSet
. - Il suppose que vous avez vos en-têtes allant de A1 à x 1.
using System;
using System.Data;
using System.IO;
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;
public class clsExcelWriter : IDisposable
{
private Excel.Application oExcel;
private Excel._Workbook oBook;
private Excel._Worksheet oSheet;
// Used to store the name of the current file
public string FileName
{
get;
private set;
}
public clsExcelWriter(string filename)
{
// Initialize Excel
oExcel = new Excel.Application();
if (!File.Exists(filename))
{
// Create a new one?
}
else
{
oBook = (Excel._Workbook)oExcel.Workbooks.Open(filename);
oSheet = (Excel._Worksheet)oBook.ActiveSheet;
}
this.FileName = filename;
// Supress any alerts
oExcel.DisplayAlerts = false;
}
private string GetExcelColumnName(int columnNumber)
{
int dividend = columnNumber;
string columnName = String.Empty;
int modulo;
while (dividend > 0)
{
modulo = (dividend - 1) % 26;
columnName = Convert.ToChar(65 + modulo).ToString() + columnName;
dividend = (int)((dividend - modulo)/26);
}
return columnName;
}
public void Dispose()
{
// Lets make sure we release those COM objects!
if (oExcel != null)
{
Marshal.FinalReleaseComObject(oSheet);
oBook.Close();
Marshal.FinalReleaseComObject(oBook);
oExcel.Quit();
Marshal.FinalReleaseComObject(oExcel);
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
}
}
public static DataSet OpenFile(string filename)
{
DataSet ds = new DataSet();
using (clsExcelWriter xl = new clsExcelWriter(filename))
{
// Iterate through each worksheet
foreach (Excel._Worksheet sheet in xl.oBook.Worksheets)
{
// Create a new table using the sheets name
DataTable dt = new DataTable(sheet.Name);
// Get the first row (where the headers should be located)
object[,] xlValues = (object[,])sheet.get_Range("A1", xl.GetExcelColumnName(sheet.UsedRange.Columns.Count) + 1).Value;
// Iterate through the values to add new DataColumns to the DataTable
for (int i = 0; i < xlValues.GetLength(1); i++)
{
dt.Columns.Add(new DataColumn(xlValues[1, i + 1].ToString()));
}
// Now get the rest of the rows
xlValues = (object[,])sheet.get_Range("A2", xl.GetExcelColumnName(sheet.UsedRange.Columns.Count) + sheet.UsedRange.Rows.Count).Value;
for (int row = 0; row < xlValues.GetLength(0); row++)
{
DataRow dr = dt.NewRow();
for (int col = 0; col < xlValues.GetLength(1); col++)
{
// xlValues array starts from 1, NOT 0 (just to confuse yee)
dr[dt.Columns[col].ColumnName] = xlValues[row + 1, col + 1];
}
dt.Rows.Add(dr);
}
ds.Tables.Add(dt);
}
}
// Your DataSet should now be filled! :)
return ds;
}
}
}
Utilisation
using System.Data;
using ExcelWriter;
namespace Test
{
class Program
{
static void Main(string[] args)
{
DataSet ds = clsExcelWriter.OpenFile(@"C:\Results.xls");
// Do some fancy stuff with the DataSet! xD
while (true) ;
}
}
}
Questions connexes
- 1. Importer des fichiers CSV multilignes dans Excel internationalement
- 2. Paquets SSIS pour importer des fichiers Excel dans SQL Server
- 3. Comment importer des fichiers excel dans SqlDatabase fichier .mdf
- 4. Importer des fichiers Excel avec image dans php/mysql
- 5. Importer des plantages XML Excel
- 6. importer C# winforms en excel,
- 7. Importer des fichiers CSV
- 8. Importer des nombres d'une colonne Excel en utilisant C#
- 9. Importer des fichiers .csv dans SQlite via l'objectif C
- 10. Importer des fichiers txt en utilisant Excel Interop en C# (QueryTables.Add)
- 11. Importer une application Excel dans Rails
- 12. Importer des fichiers DAE dans papervision
- 13. Importer des fichiers SWF dans Flash Builder
- 14. Comment importer des fichiers XML dans WEKA
- 15. Importer des fichiers dans Google App Engine
- 16. Importer des données Excel vers SQL Server
- 17. importer des fichiers en python
- 18. en C++ pour importer des fichiers de registre
- 19. Protection des fichiers Excel
- 20. décrypter des fichiers Excel
- 21. Importer des services de données ADO.NET dans Excel
- 22. Comment importer des caractères chinois depuis excel dans Oracle
- 23. Comment importer des données dans la feuille Excel
- 24. Importer des données Excel dans la base de données mysql
- 25. Excel importer à la base de données en utilisant C#
- 26. Importer fichier Excel ouvert dans Sql Server
- 27. SSIS. Importer 500 fichiers
- 28. Comment importer des fichiers csv multilignes?
- 29. . NET Créer des fichiers Excel
- 30. Bibliothèque C++ pour charger des fichiers Excel (.xls)
Il serait utile que vous nous avez dit comment (quelle bibliothèque , etc.) vous les lisiez maintenant. –