早上好。 我有很多excel文件。 这很奇怪,但我看不懂。如果我在新的Excel电子表格中复制内容,那么一切都很完美。 我想在阅读之前避免做所有的转换。我尝试了所有传统方式的“扩展属性”,但我总是犯同样的错误:“外部表格不符合预期格式。”可能文件是在Excel 97中创建的。但是使用适当的外部方法不起作用。 你能给我支持吗?谢谢你,美好的一天
在这里,我尝试使用扩展属性Excel 8.0,但我已经尝试过所有这些。
string connstr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + PercorsoCompletoFileExcel + ";Extended Properties='Excel 8.0;HDR=Yes;'";
这里我传递一个选择只采取某些列。如果我将文件复制到新的Excel工作表但我希望它能用于原始文件
,我会重复所有工作strSQL = "SELECT [NumeroContratto] AS [Numero contratto],[Codice Cliente] as [Codice cliente],[Importo Tessera] as [Importo Tessera],[Costo contratto] as [Costo contratto],Spese,Commissioni,[Importo Servizi] as [Servizi],[Importo Sconto] as [Sconto],[Importo Addebito Totale] as [Totale] from [" + foglio + "] where [Importo Addebito Totale] is not null";
OleDbCommand cmd = new OleDbCommand(strSQL, conn);
DataSet ds = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
da.Fill(ds);
答案 0 :(得分:0)
以下代码适用于我的情况。
根据我的经验,您需要先将上传的文件保存在应用程序目录中。如果不是,则在读取(.xlsx)文件时会抛出错误。
为(.xls)和(.xlsx)文件使用不同的连接字符串。
string FileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
string Extension = Path.GetExtension(FileUpload1.PostedFile.FileName);
//This setting get from configuration file
string FolderPath =ConfigurationManager.AppSettings("UploadFolder").ToString();
string FilePath = Server.MapPath(FolderPath + "\\" + FileName);
//Save file
FileUpload1.SaveAs(FilePath);
string conStr = "";
switch (Extension)
{
case ".xls": //Excel 97-03
conStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0;";
break;
case ".xlsx": //Excel 07
conStr = "Provider=Microsoft.ACE.OLEDB.12.0 ;Data Source={0};Extended Properties=\"Excel 12.0 Xml;IMEX=1;HDR=NO\";";
break;
}
conStr = String.Format(conStr, FilePath);
在配置文件中设置(在我的情况下为“Web.config”,因为它是Web应用程序)
<appSettings>
<add key="UploadFolder" value="UploadedFilesFolder" />
</appSettings>