53ed1b3af9
Arrival mostly working
55 lines
1.2 KiB
C#
55 lines
1.2 KiB
C#
using System;
|
|
using System.IO;
|
|
using CsvHelper;
|
|
using CsvHelper.Configuration;
|
|
using CsvHelper.Excel;
|
|
|
|
namespace InventoryTraker.Web.Utilities
|
|
{
|
|
public class ExcelParserBase : IDisposable
|
|
{
|
|
protected readonly CsvReader CsvReader;
|
|
|
|
protected ExcelParserBase(FileSystemInfo excelFile, CsvConfiguration csvConfiguration)
|
|
{
|
|
CsvReader = OpenExcel(excelFile, csvConfiguration);
|
|
}
|
|
|
|
protected ExcelParserBase(FileSystemInfo excelFile) :
|
|
this(excelFile,
|
|
new CsvConfiguration
|
|
{
|
|
HasHeaderRecord = false,
|
|
IgnoreBlankLines = false,
|
|
IgnoreReadingExceptions = true
|
|
})
|
|
{
|
|
}
|
|
|
|
internal static CsvReader OpenExcel(FileSystemInfo excelFile, CsvConfiguration csvConfiguration = null)
|
|
{
|
|
if (!excelFile.Exists)
|
|
throw new FileNotFoundException($"Cannot find file '{excelFile.Name}'");
|
|
|
|
var excelParser =
|
|
csvConfiguration != null
|
|
? new ExcelParser(excelFile.FullName, csvConfiguration)
|
|
: new ExcelParser(excelFile.FullName);
|
|
return new CsvReader(excelParser);
|
|
}
|
|
|
|
protected string[] GetNextCsvRowValues()
|
|
{
|
|
// get values from row
|
|
if (!CsvReader.Read())
|
|
return null;
|
|
|
|
return CsvReader.CurrentRecord;
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
CsvReader.Dispose();
|
|
}
|
|
}
|
|
} |