.xslxインポートエラーSERVER(GoDaddyはウェブサーバ)では'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.
...xslxインポートエラー 'Microsoft.ACE.OLEDB.12.0'
ソフトウェアをインストールするように指示ブログがたくさんあります。.. 2010および2007 oledb接続ソフトウェア.. 私のシステムは製品32ビット(x86)アーキテクチャと64ビットアーキテクチャです。 私はほぼ2日間試してみましたが、ローカルホストで.xlsと.xlsxの両方のインポートが正常に動作していますが、サーバを使用している間は.xlsxファイルのみで問題が発生しています。 dllは私は、サーバーで問題を解決できるように、サーバーのbinフォルダ..ここ
はコードです:
if (flexcel.HasFile)
{
name = rnd.Next(111, 9999).ToString() + "_" + System.IO.Path.GetFileName(flexcel.FileName);
string fileExtension = System.IO.Path.GetExtension(flexcel.FileName);
if (fileExtension == ".xls" || fileExtension == ".xlsx")
{
string fileLocation = Server.MapPath("../Content/MailMarketing/") + name;
if (System.IO.File.Exists(fileLocation))
{
// System.IO.File.Delete(fileLocation);
}
flexcel.SaveAs(fileLocation);
string excelConnectionString = string.Empty;
//excelConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
//Server.MapPath("~/Content/MailMarketing/") + flexcel.FileName + month + ";Extended Properties=\"Excel 12.0;\"";
////connection String for xls file format.
if (fileExtension == ".xls")
{
excelConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
fileLocation + ";Extended Properties=\"Excel 8.0;\"";
}
//connection String for xlsx file format.
else
//if (fileExtension == ".xlsx")
{
excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
Server.MapPath("../Content/MailMarketing/" + name) + ";Extended Properties=Excel 12.0;";
}
//Create Connection to Excel work book and add oledb namespace
OleDbConnection excelConnection = new OleDbConnection(excelConnectionString);
excelConnection.Open();
DataTable dt = new DataTable();
dt = excelConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
if (dt == null)
{
return;
}
String[] excelSheets = new String[dt.Rows.Count];
int t = 0;
//excel data saves in temp file here.
foreach (DataRow row in dt.Rows)
{
string x = row["TABLE_NAME"].ToString();
if (x != "Sheet1$_" && x != "Sheet2$_" && x != "Sheet3$_" && x != "Sheet4$_" && x != "Sheet5$_")
{
excelSheets[t] = row["TABLE_NAME"].ToString();
t++;
}
}
OleDbConnection excelConnection1 = new OleDbConnection(excelConnectionString);
int totalsheet = excelSheets.Length;
for (int i = 0; i < totalsheet; i++)
{
string query = string.Format("Select * from [{0}]", excelSheets[i]);
using (OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, excelConnection1))
{
dataAdapter.Fill(ds);
}
}
}
if (fileExtension.ToString().ToLower().Equals(".xml"))
{
string fileLocation = Server.MapPath("~/Content/") + Request.Files["FileUpload"].FileName;
if (System.IO.File.Exists(fileLocation))
{
System.IO.File.Delete(fileLocation);
}
Request.Files["FileUpload"].SaveAs(fileLocation);
XmlTextReader xmlreader = new XmlTextReader(fileLocation);
// DataSet ds = new DataSet();
ds.ReadXml(xmlreader);
xmlreader.Close();
}
任意の提案?
ソフトウェアをインストールせずに誰でも私にどのタイプの.dllファイルをbinフォルダに置く必要があるのですか?