ユーザーはExcelファイルを介して入力をアップロードします。エクセルファイルが空かどうかを確認したい。コンテンツの長さとファイルサイズをチェックして、空のファイルを検索します。サイズは空のファイル間で異なります(タイプとユーザータイプのデータなしで、すべてのデータを削除して空にします)。空のファイル8714のコンテンツの長さの例ですが、ユーザーが任意のデータを入力してすべてのデータを削除すると、コンテンツの長さは8104になります。
そこで、Excelファイルをデータテーブルに変換し、データテーブルがnullかどうかを確認します。空のファイルをデータテーブルに変換すると、データテーブルのデフォルトの列がF1になります。sodatatable=nullが機能しません。
私のコード:
string dirpath = Server.MapPath("~") + "uploadfile\\";
string LocalFilePath = dirpath + fileName;
fileUpload.PostedFile.SaveAs(LocalFilePath);
string fileType = Path.GetExtension(fileName);
string SourceConstr = string.Empty;
var Inputs = ProjectAttributeMasterService.GetInputAttributes(7);
if (fileType == ".xls" || fileType == ".xlsx")
{
if (fileType == ".xls")
{
SourceConstr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + LocalFilePath + "';;Extended Properties= 'Excel 8.0;HDR=Yes;IMEX=1'";
}
OleDbConnection con = new OleDbConnection(SourceConstr);
con.ResetState();
con.Open();
System.Data.DataTable dtl = new DataTable();
System.Data.DataTable dts = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
OleDbDataAdapter da = new OleDbDataAdapter("select * from [Sheet1$]", con);
da.Fill(dtl);
if ((dtl.Rows.Count >= 1 || dtl.Columns.Count >= 1) && !dtl.Columns.Contains("F1")){
}
else
{
/empty file
}
dtl.Columns.Contains( "F1")..この条件を使用すると、Excelのセル "F1"にデータが含まれていても、空が返されます。F1はすべてのサーバーのデフォルト列ではありません...したがって、これも問題ありません。