ユーザーが Excel ドキュメントをアップロードするページがあります。ドキュメントにはメンバー情報が含まれており、送信後、ファイルの内容が SQL Server テーブルに含まれるメンバー データを置き換える必要があります。
fileUploader
コードを追加した後、どのように例外が発生しますか。
if (fileUploader.HasFile)
{
string contentType = fileUploader.PostedFile.ContentType;
// Excel 2007 || Excel 2003
if (contentType.Equals("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") || contentType.Equals("application/vnd.ms-excel"))
{
hidePanels();
Members members = new Members();
if (members.getAllNotExportedMembers().Count > 0)
{
//error message
}
else
{
bool backupSucceed =
members.backUpDatabase(Server.MapPath("~/backup-db") + @"\db-backup-" +
DateTime.Now.ToString().Replace("/", "-").Replace(":", "-") + ".bak");
if (backupSucceed)
{
bool fileUploaded = Helper.saveFile(fileUploader.FileBytes,
Server.MapPath("~/admin/kar/"),
fileUploader.FileName, 1, User.Identity.Name);
if (fileUploaded)
{
bool truncateSucceed = members.truncateTable();
if (truncateSucceed)
{
importExcel(Server.MapPath("~/admin/kar/"), "2012.xlsx");
}
}
}
}
}
}
以下を除くすべてをコメントアウトした場合:
bool truncateSucceed = members.truncateTable();
if (truncateSucceed)
{
importExcel(Server.MapPath("~/admin/kar/"), "2012.xlsx");
showSuccesPanel("Success");
}
正常に動作し、例外は発生しません。
例外:
System.Data.OleDb.OleDbException (0x80004005): 外部テーブルが予期された形式ではありません。
System.Data.OleDb.OleDbConnectionInternal..ctor (OleDbConnectionString コンストラクター、OleDbConnection 接続)
で System.Data.OleDb.OleDbConnectionFactory.CreateConnection (DbConnectionOptions オプション、オブジェクト poolGroupProviderInfo、DbConnectionPool プール、DbConnection owningObject)
で System.Data.ProviderBase.DbConnectionFactory で。
System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)での CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) で
System.Data.OleDb.OleDbConnection.Open()
で admin.admin_uploadMemberList.importExcel(String filePath, String fileName) で uploadMemberList.aspx.cs:line 91
OleDB 接続文字列:
string conn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + fileName
+ @";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1;ImportMixedTypes=Text;TypeGuessRows=0""";
どうすればいいの?