Avons-nous besoin d’installer Microsoft Office sur le serveur pour importer Excel dans Asp.net?

Avons-nous besoin d’installer Microsoft Office sur le serveur pour exécuter une application permettant d’importer des données d’un fichier Excel vers une firebase database mssql?

des suggestions ou des idées?

le code que j’ai utilisé

public partial class _Default : System.Web.UI.Page { private Ssortingng strConnection = "Data Source=MYCBJ017550027;Initial Catalog=MySamplesDB;Integrated Security=True"; protected void Page_Load(object sender, EventArgs e) { } protected void btnSend_Click(object sender, EventArgs e) { ssortingng path = fileuploadExcel.PostedFile.FileName; ssortingng excelConnectionSsortingng = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;Persist Security Info=False"; OleDbConnection excelConnection =new OleDbConnection(excelConnectionSsortingng); OleDbCommand cmd = new OleDbCommand("Select [ID],[Name],[Designation] from [Sheet1$]",excelConnection); excelConnection.Open(); OleDbDataReader dReader; dReader = cmd.ExecuteReader(); SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection); sqlBulk.DestinationTableName = "Excel_table"; sqlBulk.WriteToServer(dReader); excelConnection.Close(); } } 

Si vous ne lisez que des fichiers xls, utilisez Microsoft.Jet.OLEDB.4.0 intégré à votre framework .net.

Si vous lisez des fichiers xlsx, utilisez Microsoft.ACE.OLEDB.12.0 . Les pilotes pour cela peuvent être téléchargés librement sur le site de Microsoft Vous n’avez pas besoin d’installer Microsoft Officer pour interoper.

Utilisez la chaîne de connexion suivante

  ssortingng excelConnectionSsortingng = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + path + ";Extended Properties=Excel 12.0;HDR=YES"; 

Téléchargez les pilotes d’ici

Référez-vous ceci pour un exemple courant

Comme @Romil a dit que vous pouvez utiliser le framework .NET pour cela:

 ssortingng ConnectionSsortingng = ssortingng.Format(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}; Extended Properties=""Excel 8.0;HDR=Yes"";", fileName); using (OleDbConnection conn = new OleDbConnection(ConnectionSsortingng)) { conn.Open(); DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); foreach (DataRow schemaRow in schemaTable.Rows) { ssortingng sheet = schemaRow["TABLE_NAME"].ToSsortingng(); using (OleDbCommand cmd = new OleDbCommand("SELECT * FROM [" + sheet + "]", conn)) { cmd.CommandType = CommandType.Text; DataTable outputTable = new DataTable(sheet); output.Tables.Add(outputTable); new OleDbDataAdapter(cmd).Fill(outputTable); } } conn.Close(); } 

Le problème avec jet, est que vous devez toujours installer le fournisseur de données pour celui-ci (bien que ce soit également gratuit) ou faire installer un bureau pour que cela fonctionne. Si vous avez simplement besoin de lire un fichier Excel, il existe de nombreuses bibliothèques entièrement gérées qui feront le travail parfaitement sans rien d’installation.

J’ai énuméré quelques-uns ici. J’ai utilisé abondance excelreader avec de bons résultats.

http://excelreader.codeplex.com/
http://epplus.codeplex.com/

Excel Reader semble être léger sur le côté de la documentation des choses. alors voici un exemple de la façon de l’utiliser

 IExcelDataReader reader = null; try { using (FileStream stream = new FileStream(ofd.FileName, FileMode.Open)) { ssortingng ext = System.IO.Path.GetExtension(ofd.FileName).Replace(".", "").ToUpper(); if (ext == "XLS") reader = ExcelReaderFactory.CreateBinaryReader(stream); else reader = ExcelReaderFactory.CreateOpenXmlReader(stream); reader.IsFirstRowAsColumnNames = true; using (DataSet ds = reader.AsDataSet()) { foreach (DataRow dr in ds.Tables[0].Rows) { ImportData toAdd = new ImportData() { Format = dr[0].ToSsortingng(), }; Database.Datastore.InsertObject(toAdd); } } } }