2
난 엑셀 파일 가져 오기 위해 사용하고 서비스를 가지고 있고, 구현은 다음과 같습니다
[Attributes.ImportFileExtension(Extension=".xls")]
[Attributes.ImportFileExtension(Extension=".xlt")]
[Attributes.ImportFileExtension(Extension=".xlsx")]
public class ExcelImportService:FileImportServiceBase,IFileImportService
{
public DataSet Import(System.IO.Stream fileStream)
{
IExcelDataReader excelReader = null;
switch (Extension)
{
case ".xls":
case ".xlt":
excelReader = ExcelReaderFactory.CreateBinaryReader(fileStream);
break;
case ".xlsx":
excelReader = ExcelReaderFactory.CreateOpenXmlReader(fileStream);
break;
}
excelReader.IsFirstRowAsColumnNames = true;
DataSet dataSet = excelReader.AsDataSet();
return dataSet;
}
}
은 또한, 나는이를 호출 다음 코드가 서비스가 생성되는 팩토리를 통해 제공됩니다. 이 서비스를 호출하는 코드는 다음과 같습니다가 수입되는 동안 파일이 열려하지 않는 한
try
{
var extension = Path.GetExtension(dialog.FileName);
var importService = FileImportServiceFactory.Create(extension);
var stream = dialog.OpenFile();
var data = importService.Import(stream);
stream.Close();
stream.Dispose();
var result = new FileImportedMessage { Data = data };
result.Dispatch();
}
catch (Exception e)
{
MessageDispatcher.Dispatch(new ExceptionMessage(e));
}
가져 오기 작품을 찾을 수 있습니다.
나는 두 가지 질문이 있습니다
1)이 상황을 처리하기위한 가장 좋은 방법/전략은 무엇입니까?
2) 어떻게 처리해야합니까?