2

我正在使用 Visual Studio 2008 在 C# 上创建控制台应用程序。

应用程序“读取”一个 excel 文件 97-2003 (.XLS)。

我正在使用 jet 读取文件:

OleDbConnection oConn = new OleDbConnection();
   oConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + file_path  + " ;Extended Properties=\"Excel 8.0;HDR=No;IMEX=1\";";    

但是在运行程序时出现错误“外部表不是预期的格式”。

我尝试使用 NPOI 库读取 excel 文件,但出现错误:

消息 =“无效的标头签名;读取 0x0010000000060809,预期为 0xE11AB1A1E011CFD0”

所以,就好像文件在某种程度上是无效的。

如果通过 Windows,我在 Office Excel 上打开 excel 文件,然后使用相同且相同的扩展名 .xls 覆盖它,然后运行控制台应用程序,然后应用程序运行良好,没有错误。

所以,我想做的是:用c#代码打开文件并保存并覆盖它,这样应用程序就可以成功读取文件。

我想我可以像这样打开文件:

File.OpenWrite(file_path);

但是我怎么能覆盖文件呢?

4

1 回答 1

1

You don't need to open and rewrite it, as far as I can see. Your connection string is wrong. You're not saying anywhere it's an Excel file, so by default it's looking for an Access database instead (and not finding one).

Try this instead:

Provider=Microsoft.Jet.OLEDB.4.0; data source="YourFileName.xls"; Extended Properties=Excel 8.0;

For other types of connections, see ConnectionStrings

于 2013-06-03T23:57:18.663 回答