2

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

谢谢

4

4 回答 4

4

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

您可以使用Excel 互操作来查看UsedRange是什么:

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

于 2012-04-03T23:47:04.057 回答
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());
                    }
                }
于 2014-03-21T05:23:07.093 回答
0

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

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

于 2012-04-03T23:47:26.190 回答
0

使用 Excel 互操作,我创建了这个函数。它作为功能区插件工作,但是您可以替换Globals.ThisAddInExcel.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(工作簿为空)。

于 2020-04-01T09:35:16.307 回答