【问题标题】:Check if Excel file is empty in C#在 C# 中检查 Excel 文件是否为空
【发布时间】:2012-04-03 23:42:32
【问题描述】:

谁能建议,如何检查 xls 文件是否为空? 我试过FileInfo("fname").Length == 0 但它不起作用。

谢谢

【问题讨论】:

  • 您是否试图避免 Excel 自动化?

标签: c#


【解决方案1】:

“空”Excel 文件仍会有 Excel 文件头,这就是您对 0 大小的测试失败的原因。

您可以使用Excel Interop 来查看UsedRange 是什么:

http://social.msdn.microsoft.com/Forums/en-US/exceldev/thread/b9cdfbd7-5ae9-41f7-b7e8-ebc00e835d45#546316e8-8745-42e8-9c0d-063d1373dfbe

【讨论】:

【解决方案2】:

对于.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());
                    }
                }

【讨论】:

    【解决方案3】:

    我认为没有像您所说的那样简单的解决方案。

    您必须通过一些 Excel 解析器以编程方式实际读取文件并检查是否有一些数据。

    【讨论】:

      【解决方案4】:

      我使用 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(工作簿为空)。

      【讨论】:

        猜你喜欢
        • 2011-05-03
        • 2015-07-19
        • 1970-01-01
        • 2015-04-13
        • 2013-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多