Had*_*adi 11 c# vb.net excel excel-interop
我正在编写一个程序来清空空行和列中的excel文件,我从我自己的问题开始使用Interop从Excel文件中删除空行和列的最快方法,一切都很顺利.
问题是我想防止excel在工作簿受密码保护时显示密码对话框并抛出异常而不是那样.
我使用以下代码使用interop打开excel文件:
m_XlApp = New Excel.Application
m_XlApp.visible = False
m_XlApp.DisplayAlerts = False
Dim m_xlWrkbs As Excel.Workbooks = m_XlApp.Workbooks
Dim m_xlWrkb As Excel.Workbook
m_xlWrkb = m_xlWrkbs.Open(strFile)
m_xlWrkb.DoNotPromptForConvert = true
Run Code Online (Sandbox Code Playgroud)
我尝试传递一个空密码,因为有些链接建议
m_xlWrkb = m_xlWrkbs.Open(strFile, Password:="")
Run Code Online (Sandbox Code Playgroud)
或使用
m_xlWrkb.Unprotect("")
Run Code Online (Sandbox Code Playgroud)
但没有运气.
有什么建议?
我找到了解决方案,但我会接受其他工作答案
当传递一个空字符串作为密码时,excel认为它没什么.所以它要求输入密码并显示对话框.
解决方案是将单引号作为密码传递,excel会将其视为空字符串.如果工作簿没有密码保护,它将打开,否则它将抛出以下异常
您提供的密码不正确.验证CAPS LOCK键是否已关闭,并确保使用正确的大小写
代码将是:
m_xlWrkb = m_xlWrkbs.Open(strFile, Password:="'")
Run Code Online (Sandbox Code Playgroud)
注意
在microsoft excel中,值的开头的单引号用于强制文本格式化.
例; '0
被视为有价值的文本0