Ok, voyons si je peux rendre cela logique.Problème lors de l'analyse d'un fichier XLS avec C#
J'ai un programme écrit qui analyse un fichier Excel et cela fonctionne très bien. J'utilise ce qui suit pour entrer dans le fichier:
string FileToConvert = Server.MapPath(".") + "\\App_Data\\CP-ARFJN-FLAG.XLS";
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FileToConvert + ";Extended Properties=Excel 8.0;";
OleDbConnection connection = new OleDbConnection(connectionString);
connection.Open();
//this next line assumes that the file is in default Excel format with Sheet1 as the first sheet name, adjust accordingly
OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM [CP-ARFJN-FLAG$]", connection);
et cela fonctionne très bien. Mais quand je l'essayer sur le fichier réel (il est fourni par un autre programme me) Je reçois cette erreur:
System.Data.OleDb.OleDbException: External table is not in the expected format. at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup) at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) at System.Data.OleDb.OleDbConnection.Open() at wetglobe.Page_Load(Object sender, EventArgs e)
MAIS, c'est là, je pense que le problème réside. Si je prends ce fichier, et l'enregistrer avec mon Excel local, d'abord je reçois ce pop-up:
CP-ARFJN-FLAG.XLS may contain features that are not compatible with Text (Tab delimited). Do you want to keep the workbook in this format?
- To Keep this format, which leaves out any incompatible features, click Yes.
- To preserve the features, click No. Ten save a copy in the latest Excel format.
- To see what might be lost, click Help.
Si je clique sur Non et puis enregistrez le format actuel Excel, le programme sera alors fonctionner correctement.
Donc, je suppose que cela est enregistré dans un vieux format Excel fou?
Je suppose que mes questions seraient:
- Comment puis-je savoir quelle version Excel sauvé ce? Comment puis-je l'analyser dans son état actuel?
- -ou- Puis-je l'enregistrer par programme en tant que version plus récente?
J'espère que c'est clair ... Merci.
haha ... c'était! comment simple, merci – naspinski