Je suis nouveau sur c # et essaie de lire un fichier XLSX en c # avec le code suivant:
string Connection = "Provider=Microsoft.ACE.OLEDB.12.0;DataSource=c:\\Temp\\source.xlsx;Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1\";";
//code to read the content of format file
OleDbConnection con = new OleDbConnection(Connection);
OleDbCommand command = new OleDbCommand();
DataTable dt = new DataTable();
OleDbDataAdapter myCommand = new OleDbDataAdapter("select * from [Tabelle1$]", con);
myCommand.Fill(dt);
Console.Write(dt.Rows.Count);
Je reçois un compte correct de la sortie, mais j’ai encore 2 questions:
1.Comment faire une instruction select où (comment accéder aux lignes)?
select * from [Tabelle1$] where A = '123' (A being an existing Excel row)
jettera une erreur en mentionnant des paramètres erronés ...
2.can quelqu'un peut-il me fournir un lien vers un tutoriel ou un échantillon pour savoir comment accéder aux données?
Veuillez vous référer à l'exemple de code suivant:
private DataTable LoadXLS(string strFile, String sheetName, String column, String value)
{
DataTable dtXLS = new DataTable(sheetName);
try
{
string strConnectionString = "";
if(strFile.Trim().EndsWith(".xlsx")) {
strConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";", strFile);
} else if(strFile.Trim().EndsWith(".xls")) {
strConnectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";", strFile);
}
OleDbConnection SQLConn = new OleDbConnection(strConnectionString);
SQLConn.Open();
OleDbDataAdapter SQLAdapter = new OleDbDataAdapter();
string sql = "SELECT * FROM [" + sheetName + "$] WHERE " + column + " = " + value;
OleDbCommand selectCMD = new OleDbCommand(sql, SQLConn);
SQLAdapter.SelectCommand = selectCMD;
SQLAdapter.Fill(dtXLS);
SQLConn.Close();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
return dtXLS;
}
Je sais que c’est une vieille question avec une excellente réponse, mais cette page a été citée en tête des résultats de Google pour "import xlsx c #". Je voulais donc ajouter un moyen plus moderne et plus simple de lire les données xls/xlsx à l’aide de la bibliothèque NPOI. Je veux m'assurer que les nouveaux développeurs c # sachent qu'il existe un moyen plus facile d'importer des données Excel plutôt que d'utiliser ado.net.
J'utilise une combinaison de NPOI et de Npoi.Mapper (de Donnytian: https://github.com/donnytian/Npoi.Mapper ) pour importer des fichiers Excel facilement. Ajoutez une référence de nuget à NPOI et à Npoi.Mapper, puis vous pourrez importer des données xls/xlsx à l'aide de classes fortement typées, directement corrélées aux colonnes à importer.
`` `en utilisant System.IO; en utilisant System.Linq; en utilisant Npoi.Mapper; en utilisant Npoi.Mapper.Attributes; en utilisant NPOI.SS. UserModel; Using UserManagementService.Models;
namespace JobCustomerImport.Processors { public class ExcelEmailProcessor { private UserManagementServiceContext DataContext {get; }
public ExcelEmailProcessor(int customerNumber)
{
DataContext = new UserManagementServiceContext();
}
public void Execute(string localPath, int sheetIndex)
{
IWorkbook workbook;
using (FileStream file = new FileStream(localPath, FileMode.Open, FileAccess.Read))
{
workbook = WorkbookFactory.Create(file);
}
var importer = new Mapper(workbook);
var items = importer.Take<MurphyExcelFormat>(sheetIndex);
foreach(var item in items)
{
var row = item.Value;
if (string.IsNullOrEmpty(row.EmailAddress))
continue;
UpdateUser(row);
}
DataContext.SaveChanges();
}
private void UpdateUser(MurphyExcelFormat row)
{
//LOGIC HERE TO UPDATE A USER IN DATABASE...
}
private class MurphyExcelFormat
{
[Column("District")]
public int District { get; set; }
[Column("DM")]
public string FullName { get; set; }
[Column("Email Address")]
public string EmailAddress { get; set; }
[Column(3)]
public string Username { get; set; }
public string FirstName
{
get
{
return Username.Split('.')[0];
}
}
public string LastName
{
get
{
return Username.Split('.')[1];
}
}
}
}
} `` `
Si vous êtes intéressé, j'ai couvert quelques points plus précis sur mon blog: Comment importer facilement des fichiers Excel .
Merci! Dan