【发布时间】:2020-10-06 14:27:40
【问题描述】:
我使用 vb.net 应用程序读取了一个 excel 文件(.xlsm;受密码保护)。我使用以下接口:
- System.IO.filestream
- Syncfusion.XlsIO (NuGet)
这行得通,但我想以只读模式打开它,以便其他人可以在 MS Office 中使用此文件(写入、保存……)。
代码:
Imports Syncfusion.XlsIO
Private SyncEE As Syncfusion.XlsIO.ExcelEngine
Private SyncWB As Syncfusion.XlsIO.IWorkbook
Private SyncFS As System.IO.FileStream
Public Sub new
SyncEE = New ExcelEngine
SyncFS = New FileStream(PathFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
SyncEE.Excel.DefaultVersion = ExcelVersion.Excel2016
SyncWB = SyncEE.Excel.Workbooks.Open(SyncFS, ExcelParseOptions.Default, openReadOnly, password)
SyncWB.Unprotect(password)
SyncWB = SyncEE.Excel.Workbooks.Open(SyncFS, ExcelOpenType.Automatic)
' read....
'discard
SyncWB.Close()
SyncWB = Nothing
SyncEE.Dispose()
SyncEE = Nothing
SyncFS.Dispose()
SyncFS = Nothing
End Sub
我一步一步尝试,发现我在行阻止了文件:
SyncFS = New FileStream(PathFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
然后我在“丢弃”行释放文件。
阻塞意味着没有人可以在我阅读时在 MS Excel 中手动编辑和保存 excel 文件。
【问题讨论】:
标签: excel vb.net filestream syncfusion