用户通过Excel文件上传输入。 我想找到excel文件为空或者。我检查内容长度和文件大小以查找空文件.size在空文件之间有所不同(没有类型和用户类型数据并删除所有数据以使其为空) emptyfile 8714的示例内容长度,但用户键入任何数据并删除所有数据,然后内容长度为8104
所以我将excel文件转换为datatable并检查datatable是否为null。当将空文件转换为datatable时,datatable具有默认列F1.so datatable = null not work.Pls帮助我
我的代码:
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”中的数据,则返回Empty ..并且F1不是所有服务器的默认列...所以它也是不好。
答案 0 :(得分:0)
使用以下代码:
OleDbDataAdapter da = new OleDbDataAdapter("select * from [Sheet1$]", con);
da.Fill(ds);
if ((ds.Table.Count >= 1)
{
if (ds.Tables[0].Rows.Count > 0)
{
//Excel contains data
}
else
{
//file is empty
}
}
else
{
//file is empty
}