【发布时间】:2012-04-03 23:42:32
【问题描述】:
谁能建议,如何检查 xls 文件是否为空?
我试过FileInfo("fname").Length == 0 但它不起作用。
谢谢
【问题讨论】:
-
您是否试图避免 Excel 自动化?
标签: c#
谁能建议,如何检查 xls 文件是否为空?
我试过FileInfo("fname").Length == 0 但它不起作用。
谢谢
【问题讨论】:
标签: c#
“空”Excel 文件仍会有 Excel 文件头,这就是您对 0 大小的测试失败的原因。
您可以使用Excel Interop 来查看UsedRange 是什么:
【讨论】:
对于.xls,你可以试试这个——它对我有用。
FileUpload1.SaveAs(Server.MapPath("~/FileUpload/") + path.Value);
Workbook book = Workbook.Load(Server.MapPath(("~/FileUpload/") + FileUpload1.FileName));
Worksheet sheet = book.Worksheets[0];
sheetCount.Value = sheet.Cells.LastRowIndex.ToString();
foreach (Worksheet ws in book.Worksheets)
{
if (ws.Cells.Rows.Count != 0)
{
ddlSheets.Items.Add(ws.Name.ToString());
}
}
【讨论】:
我认为没有像您所说的那样简单的解决方案。
您必须通过一些 Excel 解析器以编程方式实际读取文件并检查是否有一些数据。
【讨论】:
我使用 Excel 互操作创建了这个函数。它可以作为 Ribbon 插件使用,但是您可以将 Globals.ThisAddIn 替换为 Excel.Application。
private bool IsEmptyFolder(Excel.Workbook wb)
{
try
{
foreach(Excel.Worksheet sheet in wb.Worksheets)
{
if (Globals.ThisAddIn.Application.WorksheetFunction.CountA(sheet.Cells) != 0) return false;
}
return true;
}
catch
{
return false;
}
}
如果它在单元格中找到任何具有值的工作表,则返回 false。否则返回 true(工作簿为空)。
【讨论】: