我正在开发一个示例应用程序,我必须打开一个excel文件并检查该文件是否受写保护。代码是
using System.Windows.Forms;
using Microsoft.Office.Core;
private void button1_Click(object sender, EventArgs e)
{
string fileNameAndPath = @"D:\Sample\Sample1.xls";
// the above excel file is a write protected.
Microsoft.Office.Interop.Excel.Application a =
new Microsoft.Office.Interop.Excel.Application();
if (System.IO.File.Exists(fileNameAndPath))
{
Microsoft.Office.Interop.Excel.ApplicationClass app =
new Microsoft.Office.Interop.Excel.ApplicationClass();
// create the workbook object by opening the excel file.
app.Workbooks.Open(fileNameAndPath,0,false,5,"","",true,
Microsoft.Office.Interop.Excel.XlPlatform.xlWindows,
"\t",false, true, 0,false,true,0);
Microsoft.Office.Interop.Excel._Workbook w =
app.Workbooks.Application.ActiveWorkbook;
if (w.ReadOnly)
MessageBox.Show("HI");
// the above condition is true.
}
}
我想知道文件是否受写保护。
答案 0 :(得分:3)
您可以像这样获取FileAttributes:
if ((File.GetAttributes(fileNameAndPath) & FileAttributes.ReadOnly) > 0)
{
// The file is read-only (i.e. write-protected)
}
参见文档:http://msdn.microsoft.com/en-us/library/system.io.fileattributes.aspx
答案 1 :(得分:2)
如果您想检查文件是否只读,那么您可以使用File.GetAttributes()
进行检查,如下所示:
if(File.GetAttributes(fileNameAndPath) & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
{
//it's readonly :)
}
答案 2 :(得分:1)
我想你想查看HasPassword
类的WorkBook
属性。
编辑:留下我以下的旧答案
您的意思是文件或工作簿是否只读?
要检查工作簿是否只读,WorkBook
类具有ReadOnly
属性。
否则,要检查文件,请查看使用框架中的IO.FileInfo
类来获取文件属性,如下面的代码所示:
FileInfo fsi = new FileInfo("filepathandname");
if ((fsi.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly )
{
// it's readonly
}
答案 3 :(得分:0)
您可以查看File.GetAttributes
答案 4 :(得分:0)
基本上,ReadOnly和Write-protected是相同的。但是,您可能遇到无法访问文件的情况,因为另一个进程正在使用该文件。在这种情况下,您尝试使用FileShare打开它,如下所示:
using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read,
FileShare.ReadWrite))
{
...
}
答案 5 :(得分:0)
您可以使用
检查保护activeDocument.ProtectionType