diff --git a/ooxml/POIXMLDocument.cs b/ooxml/POIXMLDocument.cs
index c8a069c64..222f25ce0 100644
--- a/ooxml/POIXMLDocument.cs
+++ b/ooxml/POIXMLDocument.cs
@@ -68,11 +68,11 @@ private void init(OPCPackage pkg)
* in the event of a problem.
* Works around shortcomings in java's this() constructor calls
*/
- public static OPCPackage OpenPackage(String path)
+ public static OPCPackage OpenPackage(String path, bool readOnly = false)
{
try
{
- return OPCPackage.Open(path);
+ return OPCPackage.Open(path, readOnly ? PackageAccess.READ: PackageAccess.READ_WRITE);
}
catch (InvalidFormatException e)
{
diff --git a/ooxml/SS/UserModel/WorkbookFactory.cs b/ooxml/SS/UserModel/WorkbookFactory.cs
index d6e97ebf6..bd81185c6 100644
--- a/ooxml/SS/UserModel/WorkbookFactory.cs
+++ b/ooxml/SS/UserModel/WorkbookFactory.cs
@@ -121,7 +121,7 @@ public static IWorkbook Create(OPCPackage pkg)
/// IWorkbook depending on the input HSSFWorkbook or XSSFWorkbook is returned.
/// Your input stream MUST either support mark/reset, or
/// be wrapped as a {@link PushbackInputStream}!
- public static IWorkbook Create(Stream inputStream, bool bReadonly)
+ public static IWorkbook Create(Stream inputStream, bool readOnly)
{
if (inputStream.Length == 0)
throw new EmptyFileException();
@@ -133,7 +133,7 @@ public static IWorkbook Create(Stream inputStream, bool bReadonly)
inputStream.Position = 0;
if (DocumentFactoryHelper.HasOOXMLHeader(inputStream))
{
- return new XSSFWorkbook(OPCPackage.Open(inputStream, bReadonly));
+ return new XSSFWorkbook(OPCPackage.Open(inputStream, readOnly));
}
throw new InvalidFormatException("Your stream was neither an OLE2 stream, nor an OOXML stream.");
}
diff --git a/ooxml/Util/PackageHelper.cs b/ooxml/Util/PackageHelper.cs
index 9c3acc602..df29d079a 100644
--- a/ooxml/Util/PackageHelper.cs
+++ b/ooxml/Util/PackageHelper.cs
@@ -30,12 +30,11 @@ namespace NPOI.Util
*/
public class PackageHelper
{
-
- public static OPCPackage Open(Stream is1)
+ public static OPCPackage Open(Stream stream, bool readOnly = false)
{
try
{
- return OPCPackage.Open(is1);
+ return OPCPackage.Open(stream, readOnly);
}
catch (InvalidFormatException e)
{
diff --git a/ooxml/XSSF/UserModel/XSSFWorkbook.cs b/ooxml/XSSF/UserModel/XSSFWorkbook.cs
index e7619bb20..2940dc72f 100644
--- a/ooxml/XSSF/UserModel/XSSFWorkbook.cs
+++ b/ooxml/XSSF/UserModel/XSSFWorkbook.cs
@@ -230,8 +230,8 @@ public XSSFWorkbook(OPCPackage pkg)
* pkg.close(); // gracefully closes the underlying zip file
*
*/
- public XSSFWorkbook(Stream is1)
- : base(PackageHelper.Open(is1))
+ public XSSFWorkbook(Stream fileStream, bool readOnly = false)
+ : base(PackageHelper.Open(fileStream, readOnly))
{
BeforeDocumentRead();
@@ -259,8 +259,8 @@ public XSSFWorkbook(Stream is1)
*
* @param file the file to open
*/
- public XSSFWorkbook(FileInfo file)
- : this(OPCPackage.Open(file))
+ public XSSFWorkbook(FileInfo file, bool readOnly = false)
+ : this(OPCPackage.Open(file, readOnly? PackageAccess.READ: PackageAccess.READ_WRITE))
{
}
@@ -301,8 +301,8 @@ public XSSFWorkbook(FileInfo file)
*
* @param path the file name.
*/
- public XSSFWorkbook(String path)
- : this(OpenPackage(path))
+ public XSSFWorkbook(String path, bool readOnly = false)
+ : this(OpenPackage(path, readOnly))
{
}
diff --git a/openxml4Net/OPC/OPCPackage.cs b/openxml4Net/OPC/OPCPackage.cs
index 327fb58e0..6443d72cc 100644
--- a/openxml4Net/OPC/OPCPackage.cs
+++ b/openxml4Net/OPC/OPCPackage.cs
@@ -294,9 +294,9 @@ public static OPCPackage Open(FileInfo file, PackageAccess access)
* The InputStream to read the package from
* @return A PackageBase object
*/
- public static OPCPackage Open(Stream in1)
+ public static OPCPackage Open(Stream stream)
{
- OPCPackage pack = new ZipPackage(in1, PackageAccess.READ_WRITE);
+ OPCPackage pack = new ZipPackage(stream, PackageAccess.READ_WRITE);
try
{
if (pack.partList == null)
@@ -317,9 +317,9 @@ public static OPCPackage Open(Stream in1)
return pack;
}
- public static OPCPackage Open(Stream in1,bool bReadonly)
+ public static OPCPackage Open(Stream stream,bool readOnly)
{
- OPCPackage pack = new ZipPackage(in1, bReadonly ? PackageAccess.READ : PackageAccess.READ_WRITE);
+ OPCPackage pack = new ZipPackage(stream, readOnly ? PackageAccess.READ : PackageAccess.READ_WRITE);
if (pack.partList == null)
{
pack.GetParts();