Changed all Excel access to read-only access if sheet is actually opened for reading.
This should avoid errors when the sheet is still open in Excel.
This commit is contained in:
parent
782ae3138e
commit
d02cb0d56b
@ -338,7 +338,8 @@ namespace ENI2.Controls
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var workbook = new XLWorkbook(ofd.FileName))
|
using (var stream = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||||
|
using (var workbook = new XLWorkbook(stream))
|
||||||
{
|
{
|
||||||
var worksheet = workbook.Worksheet(1); // Get first worksheet
|
var worksheet = workbook.Worksheet(1); // Get first worksheet
|
||||||
var rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row
|
var rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row
|
||||||
|
|||||||
@ -1051,7 +1051,8 @@ namespace ENI2.DetailViewControls
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var workbook = new XLWorkbook(ofd.FileName))
|
using (var stream = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||||
|
using (var workbook = new XLWorkbook(stream))
|
||||||
{
|
{
|
||||||
var worksheet = workbook.Worksheet(1); // Get first worksheet
|
var worksheet = workbook.Worksheet(1); // Get first worksheet
|
||||||
var rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
|
var rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
|
||||||
@ -1121,7 +1122,8 @@ namespace ENI2.DetailViewControls
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var workbook = new XLWorkbook(ofd.FileName))
|
using (var stream = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||||
|
using (var workbook = new XLWorkbook(stream))
|
||||||
{
|
{
|
||||||
var worksheet = workbook.Worksheet(1); // Get first worksheet
|
var worksheet = workbook.Worksheet(1); // Get first worksheet
|
||||||
var rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
|
var rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
|
||||||
@ -1192,7 +1194,8 @@ namespace ENI2.DetailViewControls
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var workbook = new XLWorkbook(ofd.FileName))
|
using (var stream = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||||
|
using (var workbook = new XLWorkbook(stream))
|
||||||
{
|
{
|
||||||
var worksheet = workbook.Worksheet(1);
|
var worksheet = workbook.Worksheet(1);
|
||||||
var rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
|
var rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
|
||||||
@ -1268,7 +1271,8 @@ namespace ENI2.DetailViewControls
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var workbook = new XLWorkbook(ofd.FileName))
|
using (var stream = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||||
|
using (var workbook = new XLWorkbook(stream))
|
||||||
{
|
{
|
||||||
var worksheet = workbook.Worksheet(1);
|
var worksheet = workbook.Worksheet(1);
|
||||||
var rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
|
var rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
|
||||||
|
|||||||
@ -485,7 +485,8 @@ namespace ENI2.DetailViewControls
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var workbook = new XLWorkbook(ofd.FileName))
|
using (var stream = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||||
|
using (var workbook = new XLWorkbook(stream))
|
||||||
{
|
{
|
||||||
var worksheet = workbook.Worksheet(1); // Get first worksheet
|
var worksheet = workbook.Worksheet(1); // Get first worksheet
|
||||||
var rows = worksheet.RangeUsed().RowsUsed().Skip(3); // Skip first three rows
|
var rows = worksheet.RangeUsed().RowsUsed().Skip(3); // Skip first three rows
|
||||||
|
|||||||
@ -9,6 +9,7 @@ using System.Globalization;
|
|||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
namespace ENI2.Excel
|
namespace ENI2.Excel
|
||||||
{
|
{
|
||||||
@ -22,6 +23,7 @@ namespace ENI2.Excel
|
|||||||
protected CountryMode _countryMode = CountryMode.DE;
|
protected CountryMode _countryMode = CountryMode.DE;
|
||||||
|
|
||||||
protected XLWorkbook _workBook;
|
protected XLWorkbook _workBook;
|
||||||
|
protected FileStream _workBookStream;
|
||||||
protected Dictionary<string, IXLDefinedName> _nameDict;
|
protected Dictionary<string, IXLDefinedName> _nameDict;
|
||||||
protected ILog _log;
|
protected ILog _log;
|
||||||
|
|
||||||
@ -101,6 +103,12 @@ namespace ENI2.Excel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void OpenWorkbookReadOnly(string path)
|
||||||
|
{
|
||||||
|
_workBookStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
|
||||||
|
_workBook = new XLWorkbook(_workBookStream);
|
||||||
|
}
|
||||||
|
|
||||||
private static double? ParseAnyDouble(string val)
|
private static double? ParseAnyDouble(string val)
|
||||||
{
|
{
|
||||||
double? result = null;
|
double? result = null;
|
||||||
@ -212,6 +220,11 @@ namespace ENI2.Excel
|
|||||||
_workBook.Dispose();
|
_workBook.Dispose();
|
||||||
_workBook = null;
|
_workBook = null;
|
||||||
}
|
}
|
||||||
|
if (_workBookStream != null)
|
||||||
|
{
|
||||||
|
_workBookStream.Dispose();
|
||||||
|
_workBookStream = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@ -222,4 +235,4 @@ namespace ENI2.Excel
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -53,8 +53,10 @@ namespace ENI2.Excel
|
|||||||
{
|
{
|
||||||
File.Copy(targetPath, comparisonFileName, true);
|
File.Copy(targetPath, comparisonFileName, true);
|
||||||
|
|
||||||
using (var sourceWorkbook = new XLWorkbook(sourcePath))
|
using (var sourceStream = new FileStream(sourcePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||||
using (var comparisonWorkbook = new XLWorkbook(comparisonFileName))
|
using (var sourceWorkbook = new XLWorkbook(sourceStream))
|
||||||
|
using (var comparisonStream = new FileStream(comparisonFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||||
|
using (var comparisonWorkbook = new XLWorkbook(comparisonStream))
|
||||||
{
|
{
|
||||||
// Es werden Zellen der "used range" miteinander verglichen
|
// Es werden Zellen der "used range" miteinander verglichen
|
||||||
foreach (var sourceSheet in sourceWorkbook.Worksheets)
|
foreach (var sourceSheet in sourceWorkbook.Worksheets)
|
||||||
@ -152,4 +154,4 @@ namespace ENI2.Excel
|
|||||||
return comparisonFileName;
|
return comparisonFileName;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,7 +26,8 @@ namespace ENI2.Excel
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var workbook = new XLWorkbook(ofd.FileName))
|
using (var stream = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||||
|
using (var workbook = new XLWorkbook(stream))
|
||||||
{
|
{
|
||||||
var worksheet = workbook.Worksheet(1);
|
var worksheet = workbook.Worksheet(1);
|
||||||
var rows = worksheet.RangeUsed().RowsUsed();
|
var rows = worksheet.RangeUsed().RowsUsed();
|
||||||
@ -144,7 +145,8 @@ namespace ENI2.Excel
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var workbook = new XLWorkbook(ofd.FileName))
|
using (var stream = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||||
|
using (var workbook = new XLWorkbook(stream))
|
||||||
{
|
{
|
||||||
var worksheet = workbook.Worksheet(1);
|
var worksheet = workbook.Worksheet(1);
|
||||||
var rows = worksheet.RangeUsed().RowsUsed();
|
var rows = worksheet.RangeUsed().RowsUsed();
|
||||||
|
|||||||
@ -32,7 +32,7 @@ namespace ENI2.Excel
|
|||||||
|
|
||||||
public ExcelReader(string filePath, bool createNameFields = true)
|
public ExcelReader(string filePath, bool createNameFields = true)
|
||||||
{
|
{
|
||||||
this._workBook = new XLWorkbook(filePath);
|
this.OpenWorkbookReadOnly(filePath);
|
||||||
if (createNameFields)
|
if (createNameFields)
|
||||||
this.InitNameFields();
|
this.InitNameFields();
|
||||||
|
|
||||||
@ -793,4 +793,4 @@ namespace ENI2.Excel
|
|||||||
|
|
||||||
#endregion Dakosy-specific functions
|
#endregion Dakosy-specific functions
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,7 +26,7 @@ namespace ENI2.Excel
|
|||||||
if (isRefSheet) filename = @"Excel\Reference_Sheet_DE.xlsx";
|
if (isRefSheet) filename = @"Excel\Reference_Sheet_DE.xlsx";
|
||||||
|
|
||||||
string refFilePath = System.IO.Path.Combine(Environment.CurrentDirectory, filename);
|
string refFilePath = System.IO.Path.Combine(Environment.CurrentDirectory, filename);
|
||||||
this._workBook = new XLWorkbook(refFilePath);
|
this.OpenWorkbookReadOnly(refFilePath);
|
||||||
|
|
||||||
this.InitNameFields();
|
this.InitNameFields();
|
||||||
}
|
}
|
||||||
@ -1426,4 +1426,4 @@ namespace ENI2.Excel
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -128,7 +128,8 @@ namespace ENI2.SheetDisplayControls
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var workbook = new XLWorkbook(ofd.FileName))
|
using (var stream = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||||
|
using (var workbook = new XLWorkbook(stream))
|
||||||
{
|
{
|
||||||
var worksheet = workbook.Worksheet(1); // Get first worksheet
|
var worksheet = workbook.Worksheet(1); // Get first worksheet
|
||||||
var rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
|
var rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
|
||||||
|
|||||||
@ -168,7 +168,8 @@ namespace ENI2.SheetDisplayControls
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var workbook = new XLWorkbook(ofd.FileName))
|
using (var stream = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||||
|
using (var workbook = new XLWorkbook(stream))
|
||||||
{
|
{
|
||||||
var worksheet = workbook.Worksheet(1); // Get first worksheet
|
var worksheet = workbook.Worksheet(1); // Get first worksheet
|
||||||
var rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
|
var rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
|
||||||
|
|||||||
@ -146,7 +146,8 @@ namespace ENI2.SheetDisplayControls
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var workbook = new XLWorkbook(ofd.FileName))
|
using (var stream = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||||
|
using (var workbook = new XLWorkbook(stream))
|
||||||
{
|
{
|
||||||
var worksheet = workbook.Worksheet(1); // Get first worksheet
|
var worksheet = workbook.Worksheet(1); // Get first worksheet
|
||||||
var rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
|
var rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
|
||||||
|
|||||||
@ -128,7 +128,8 @@ namespace ENI2.SheetDisplayControls
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var workbook = new XLWorkbook(ofd.FileName))
|
using (var stream = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||||
|
using (var workbook = new XLWorkbook(stream))
|
||||||
{
|
{
|
||||||
var worksheet = workbook.Worksheet(1); // Get first worksheet
|
var worksheet = workbook.Worksheet(1); // Get first worksheet
|
||||||
var rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
|
var rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
|
||||||
|
|||||||
@ -520,7 +520,8 @@ namespace ENI2.SheetDisplayControls
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var workbook = new XLWorkbook(ofd.FileName))
|
using (var stream = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||||
|
using (var workbook = new XLWorkbook(stream))
|
||||||
{
|
{
|
||||||
var worksheet = workbook.Worksheet(1); // Get first worksheet
|
var worksheet = workbook.Worksheet(1); // Get first worksheet
|
||||||
var rows = worksheet.RangeUsed().RowsUsed().Skip(3); // Skip first three rows
|
var rows = worksheet.RangeUsed().RowsUsed().Skip(3); // Skip first three rows
|
||||||
|
|||||||
@ -36,7 +36,23 @@ namespace bsmd.ExcelReadService
|
|||||||
this._excelApp.DisplayAlerts = false;
|
this._excelApp.DisplayAlerts = false;
|
||||||
this._excelWorkbooks = _excelApp.Workbooks;
|
this._excelWorkbooks = _excelApp.Workbooks;
|
||||||
|
|
||||||
this._portcall = _excelWorkbooks.Open(filePath, 0, true, 5, "", "", false, XlPlatform.xlWindows, "", false, false, 0, false, false, false);
|
this._portcall = _excelWorkbooks.Open(
|
||||||
|
filePath,
|
||||||
|
UpdateLinks: 0,
|
||||||
|
ReadOnly: true,
|
||||||
|
Format: 5,
|
||||||
|
Password: "",
|
||||||
|
WriteResPassword: "",
|
||||||
|
IgnoreReadOnlyRecommended: true,
|
||||||
|
Origin: XlPlatform.xlWindows,
|
||||||
|
Delimiter: "",
|
||||||
|
Editable: false,
|
||||||
|
Notify: false,
|
||||||
|
Converter: 0,
|
||||||
|
AddToMru: false,
|
||||||
|
Local: false,
|
||||||
|
CorruptLoad: false);
|
||||||
|
this._portcall.ChangeFileAccess(XlFileAccess.xlReadOnly);
|
||||||
_nameDict = new Dictionary<string, Name>();
|
_nameDict = new Dictionary<string, Name>();
|
||||||
int bookCnt = 0;
|
int bookCnt = 0;
|
||||||
foreach(Name name in _portcall.Names)
|
foreach(Name name in _portcall.Names)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user