检查C#中的Excel文件是否为空

时间:2012-04-03 23:42:32

标签: c#

任何人都可以建议,如何检查xls文件是否为空? 我试过FileInfo("fname").Length == 0但它没有用。

由于

4 个答案:

答案 0 :(得分:4)

“空”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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

我认为没有类似于你所说的简单解决方案。

您必须通过某些Excel解析器以编程方式读取该文件并检查是否存在某些数据。

答案 3 :(得分:0)

使用Excel Interop,我已经创建了此功能。它可以用作功能区加载项,但是可以将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(工作簿为空)。