Je souhaite obtenir une valeur à partir de 12 feuilles Excel. est-il possible que j'obtienne les valeurs sans ouvrir la feuille d'Excel? J'utilise vb.net. S'il vous plaît poster un exemple de code, s'il y a un moyen de lire les valeurs sans ouvrir le fichier Excel. merciLecture de valeurs à partir d'un fichier Excel
Répondre
Vous ne pouvez pas lire les valeurs sans ouvrir le fichier Excel. Mais vous pouvez lire les valeurs sans avoir à ouvrir Excel.
Si le fichier est enregistré au format xml, il sera plus facile. Sinon, la méthode la plus simple consiste à toujours utiliser Excel mais utiliser Office Automation pour le faire. Le plus dur est de créer un analyseur de fichier Excel - assez dur sur le format xml excel non ouvert (avant Office 2003) - dur mais toujours possible.
Cependant, il est tout à fait impossible de lire une feuille de calcul Excel sans ouvrir le fichier du tout ..
Voici un extrait de code que vous pouvez utiliser pour ouvrir une feuille de calcul VB.NET, en tirant parti de la bureautique (il ouvre encore le fichier, un compte sur dll d'automatisation Excel, mais ne nécessite pas d'ouvrir Excel):
AVERTISSEMENT
le code suivant n'est pas destiné à être utilisé tel quel, mais simplement il est un échantillon pour guider le lecteur à leur o wn solution qui devrait être soigneusement testé.
' The code below requires you to add references to Office Interop assemblies
' into your VB.NET project (if you don't know how to do that search Google)
xlApp = New Excel.ApplicationClass
xlWorkBook = xlApp.Workbooks.Open("<YOUR EXCEL SPREADSHEET FILE HERE")
xlWorkSheet = xlWorkBook.Worksheets("sheet1")
range = xlWorkSheet.UsedRange
For rCnt = 1 To range.Rows.Count
For cCnt = 1 To range.Columns.Count
Obj = CType(range.Cells(rCnt, cCnt), Excel.Range)
' Obj.value now contains the value in the cell..
Next
Next
Je ne sais pas de toute façon d'obtenir une valeur à partir d'une feuille de calcul Excel sans ouvrir réellement mais vous pouvez accéder à la feuille de calcul sans avoir installé si ce bureau est le problème que vous rencontrez. Jetez un coup d'œil à l'utilisation des assemblages d'interopérabilité primaires Office (voir here).
Vous pouvez utiliser ADO.NET pour lire des valeurs à partir d'une feuille Excel. Pour plus d'informations sur la chaîne de connexion, voir http://www.connectionstrings.com/excel-2007
<connectionStrings>
<add name="Default"
connectionString='Microsoft.ACE.OLEDB.12.0;Data Source=c:\your\folder\file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES";'
providerName="System.Data.OleDb" />
</connectionStrings>
Vous pouvez alors utiliser un System.Data.OleDb.OleDbConnection
standard pour lire les valeurs de la source de données. Par exemple, considérons un fichier Excel qui a une feuille nommée Users
, avec deux colonnes, UserName
et Age
.
using System.Data;
using System.Data.Common;
public int UserExists(string userName, int age)
{
var provider = ConfigurationManager.ConnectionStrings["Default"].ProviderName;
var factory = DbProviderFactories.GetFactory(provider);
var connectionString = ConfigurationManager.ConnectionStrings["Default"].ConnectionString;
using (var connection = factory.CreateConnection())
{
connection.ConnectionString = connectionString;
using (DbCommand command = connection.CreateCommand())
{
DbParameter userNameParameter = factory.CreateParameter();
userNameParameter.ParameterName = "@UserName";
userNameParameter.DbType = DbType.String;
userNameParameter.Direction = ParameterDirection.Input;
userNameParameter.IsNullable = false;
userNameParameter.Value = userName;
DbParameter ageParameter = factory.CreateParameter();
ageParameter.ParameterName = "@Age";
ageParameter.DbType = DbType.Int32;
ageParameter.Direction = ParameterDirection.Input;
ageParameter.IsNullable = false;
ageParameter.Value = age;
command.CommandText = "SELECT COUNT(*) FROM [Users$] WHERE [email protected] AND [email protected]";
command.Parameters.Add(userNameParameter);
command.Parameters.Add(ageParameter);
connection.Open();
int usersExits = (int) command.ExecuteScalar();
return usersExits == 1;
}
}
}
L'utilisateur a demandé le code dans vb.net, pas C# .. est-ce que je devrais vous voter pour cela? Utilisez vos votes down avec parcimonie, soyez gentils avec les autres membres de l'OS et vous serez récompensé. –
En fait, c'était mon premier vote négatif. Down-vote accepté. –
Juste wow, vous deux. Espérant relancer ce match de frappe d'il y a 7 ans. – ThatGuy
utiliser ce code pour cela,
DimobjEXCELCon As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=EXCLE_FILE_PATH;Extended Properties=""Excel 12.0 Xml;HDR=Yes""")
ExcelConnection.Open()
Dim objQuery As String = "SELECT * FROM [Sheet1$]" 'get values from sheet1, here you can change your sheet name
Dim objCMD As OleDbCommand = New OleDbCommand(objQuery,objEXCELCon)
Dim objDR As OleDbDataReader
Dim SQLconn As New SqlConnection()
Dim szCON As String = "Connection string for database"
SQLconn.ConnectionString = szCON
SQLconn.Open()
Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(SQLConn)
bulkCopy.DestinationTableName = "TableToWriteToInSQLSERVER"
Try
objDR = objCMD.ExecuteReader
bulCopy.WriteToServer(objDR)
objDR.Close()
SQLConn.Close()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
Une façon est de créer un objet d'application Excel et VISIBLE = false, puis ouvrez Excel. Je ne sais pas si vous cherchez quelque chose à augmenter la vitesse ou juste pour éviter que l'utilisateur voit les fichiers Excel ouverts et fermés. J'ai utilisé ceci et cela fonctionne. Je pense à utiliser les connexions ADO; J'ai utilisé ceci avec l'accès et ils fonctionnent très bien, et Excel peut être utilisé comme base de données; Je ne sais pas ce qui se passe si certains de ces fichiers n'ont pas le tableau de style de base de données (champs en haut, valeurs en baisse) ??
- 1. Lecture de valeurs à partir d'un fichier XML avec Linq
- 2. Lecture des valeurs nulles à partir du fichier
- 3. Lecture de valeurs de date à partir d'une cellule Excel à l'aide de l'API POI HSSF
- 4. Lecture d'un classeur Excel à partir d'Access
- 5. Lecture de fichier Excel à l'aide du fichier jar POI
- 6. Lecture à partir d'un fichier
- 7. Lecture à partir du fichier
- 8. Lecture de données à partir d'un fichier
- 9. C# Lecture à partir d'un fichier personnalisé
- 10. Lecture des informations de lien hypertexte à partir d'un fichier Excel à l'aide .NET
- 11. Lecture d'un fichier Excel en PHP
- 12. Lecture de la valeur à partir d'une plage fusionnée (Excel)
- 13. Lecture de valeurs à partir d'un fichier et affectation à une variable dans un script batch
- 14. Lecture à partir d'un fichier, effacement, écriture
- 15. Lecture à partir du fichier en eclipse
- 16. Qt - lecture à partir d'un fichier texte
- 17. Lecture à partir d'un fichier en C++
- 18. Lecture par programmation _AssemblyLocation à partir d'un classeur Excel VSTO
- 19. Rails import à partir du fichier Excel
- 20. Lecture ints à partir d'un fichier Chuck
- 21. double lecture des valeurs d'un fichier
- 22. Lecture d'entiers à partir d'Excel en utilisant oledb
- 23. Lecture et regroupement des valeurs de caractères à partir d'un fichier source
- 24. Paramètres de lecture à partir de App.Config
- 25. fichier Excel lecture avec chaîne de connexion de bureau 2007
- 26. mon code de lecture Erreur de fichier Excel
- 27. Vb.net - Recherche fichier Excel pour les valeurs
- 28. Lecture des valeurs du fichier de propriétés via NANT
- 29. Lecture à partir de fichiers en python
- 30. Lecture Excel en C#
J'ai vu Office (Excel, Word, etc.) se casser brusquement lorsque l'application automatisée décide soudainement d'afficher une boîte de dialogue modale. Votre programme va probablement se bloquer jusqu'à ce que quelqu'un ferme ces boîtes de dialogue. Non recommandé pour les applications de production! –
vous ne pouvez pas être sérieux .. Alexander .. le code ci-dessus est destiné à être un exemple .. Je ne m'attendais pas à ce que quelqu'un le prenne tel quel et le vide aveuglément dans leur application de production. –
J'ai décliné parce que je considère que la solution que vous fournissez est inférieure à l'utilisation d'ADO.NET. Je pense que c'est une raison valable pour voter. –