Compare commits

...

2 Commits

Author SHA1 Message Date
d02cb0d56b 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.
2026-01-26 13:48:17 +01:00
782ae3138e Increased version to 7.2.14 2026-01-26 13:46:51 +01:00
17 changed files with 70 additions and 26 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -36,8 +36,8 @@
<MinimumRequiredVersion>5.4.0.0</MinimumRequiredVersion>
<CreateWebPageOnPublish>true</CreateWebPageOnPublish>
<WebPage>publish.html</WebPage>
<ApplicationRevision>2</ApplicationRevision>
<ApplicationVersion>7.2.13.2</ApplicationVersion>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>7.2.14.0</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<CreateDesktopShortcut>true</CreateDesktopShortcut>
<PublishWizardCompleted>true</PublishWizardCompleted>

View File

@ -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)
{

View File

@ -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)

View File

@ -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();

View File

@ -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();

View File

@ -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();
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -2,6 +2,6 @@
[assembly: AssemblyCompany("schick Informatik")]
[assembly: AssemblyProduct("BSMD NSW interface")]
[assembly: AssemblyInformationalVersion("7.2.13")]
[assembly: AssemblyInformationalVersion("7.2.14")]
[assembly: AssemblyCopyright("Copyright © 2014-2025 schick Informatik")]
[assembly: AssemblyTrademark("")]

View File

@ -1,4 +1,4 @@
using System.Reflection;
[assembly: AssemblyVersion("7.2.13.*")]
[assembly: AssemblyVersion("7.2.14.*")]