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
|
||||
{
|
||||
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 rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row
|
||||
|
||||
@ -1051,7 +1051,8 @@ namespace ENI2.DetailViewControls
|
||||
{
|
||||
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 rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
|
||||
@ -1121,7 +1122,8 @@ namespace ENI2.DetailViewControls
|
||||
{
|
||||
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 rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
|
||||
@ -1192,7 +1194,8 @@ namespace ENI2.DetailViewControls
|
||||
{
|
||||
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 rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
|
||||
@ -1268,7 +1271,8 @@ namespace ENI2.DetailViewControls
|
||||
{
|
||||
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 rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
|
||||
|
||||
@ -485,7 +485,8 @@ namespace ENI2.DetailViewControls
|
||||
{
|
||||
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 rows = worksheet.RangeUsed().RowsUsed().Skip(3); // Skip first three rows
|
||||
|
||||
@ -9,6 +9,7 @@ using System.Globalization;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.IO;
|
||||
|
||||
namespace ENI2.Excel
|
||||
{
|
||||
@ -22,6 +23,7 @@ namespace ENI2.Excel
|
||||
protected CountryMode _countryMode = CountryMode.DE;
|
||||
|
||||
protected XLWorkbook _workBook;
|
||||
protected FileStream _workBookStream;
|
||||
protected Dictionary<string, IXLDefinedName> _nameDict;
|
||||
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)
|
||||
{
|
||||
double? result = null;
|
||||
@ -212,6 +220,11 @@ namespace ENI2.Excel
|
||||
_workBook.Dispose();
|
||||
_workBook = null;
|
||||
}
|
||||
if (_workBookStream != null)
|
||||
{
|
||||
_workBookStream.Dispose();
|
||||
_workBookStream = null;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
@ -53,8 +53,10 @@ namespace ENI2.Excel
|
||||
{
|
||||
File.Copy(targetPath, comparisonFileName, true);
|
||||
|
||||
using (var sourceWorkbook = new XLWorkbook(sourcePath))
|
||||
using (var comparisonWorkbook = new XLWorkbook(comparisonFileName))
|
||||
using (var sourceStream = new FileStream(sourcePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||
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
|
||||
foreach (var sourceSheet in sourceWorkbook.Worksheets)
|
||||
|
||||
@ -26,7 +26,8 @@ namespace ENI2.Excel
|
||||
{
|
||||
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 rows = worksheet.RangeUsed().RowsUsed();
|
||||
@ -144,7 +145,8 @@ namespace ENI2.Excel
|
||||
{
|
||||
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 rows = worksheet.RangeUsed().RowsUsed();
|
||||
|
||||
@ -32,7 +32,7 @@ namespace ENI2.Excel
|
||||
|
||||
public ExcelReader(string filePath, bool createNameFields = true)
|
||||
{
|
||||
this._workBook = new XLWorkbook(filePath);
|
||||
this.OpenWorkbookReadOnly(filePath);
|
||||
if (createNameFields)
|
||||
this.InitNameFields();
|
||||
|
||||
|
||||
@ -26,7 +26,7 @@ namespace ENI2.Excel
|
||||
if (isRefSheet) filename = @"Excel\Reference_Sheet_DE.xlsx";
|
||||
|
||||
string refFilePath = System.IO.Path.Combine(Environment.CurrentDirectory, filename);
|
||||
this._workBook = new XLWorkbook(refFilePath);
|
||||
this.OpenWorkbookReadOnly(refFilePath);
|
||||
|
||||
this.InitNameFields();
|
||||
}
|
||||
|
||||
@ -128,7 +128,8 @@ namespace ENI2.SheetDisplayControls
|
||||
{
|
||||
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 rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
|
||||
|
||||
@ -168,7 +168,8 @@ namespace ENI2.SheetDisplayControls
|
||||
{
|
||||
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 rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
|
||||
|
||||
@ -146,7 +146,8 @@ namespace ENI2.SheetDisplayControls
|
||||
{
|
||||
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 rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
|
||||
|
||||
@ -128,7 +128,8 @@ namespace ENI2.SheetDisplayControls
|
||||
{
|
||||
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 rows = worksheet.RangeUsed().RowsUsed().Skip(1); // Skip header row if present
|
||||
|
||||
@ -520,7 +520,8 @@ namespace ENI2.SheetDisplayControls
|
||||
{
|
||||
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 rows = worksheet.RangeUsed().RowsUsed().Skip(3); // Skip first three rows
|
||||
|
||||
@ -36,7 +36,23 @@ namespace bsmd.ExcelReadService
|
||||
this._excelApp.DisplayAlerts = false;
|
||||
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>();
|
||||
int bookCnt = 0;
|
||||
foreach(Name name in _portcall.Names)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user