2017-05-12 2 views
0

NPOI를 사용하여 Excel [xls 및 xlsx]을 읽으려고합니다. 다음 코드를 사용하고 있지만 '전체 헤더를 읽을 수 없습니다. 27 바이트 읽기; 예상 된 512 바이트 '중 8KB xls 파일을 읽는 중NPOI를 사용하여 Excel 읽기

byte[] byteArray = Encoding.UTF8.GetBytes(filepath); 
    MemoryStream stream = new MemoryStream(byteArray); 
    MemoryStream stream1 = new MemoryStream(Encoding.UTF8.GetBytes(filepath ?? "")); 

    NPOI.HSSF.UserModel.HSSFWorkbook hssfwb = default(HSSFWorkbook); 
    hssfwb = new NPOI.HSSF.UserModel.HSSFWorkbook(stream1); 
    Sheet sheet = hssfwb.GetSheetAt(0); 
    DataTable dtinputExcel = new DataTable(); 

이 오류 때문에 가능한 모든 코드를 net에서 사용할 수 있습니다. 어떤 크기의 [xls/xlsx]를 읽고 오류를 없애는 방법은 무엇인지 안내해주십시오.

+0

선택하면, 당신은 대신 파일의 잠금을 읽을 수 있습니다. –

+0

코드를 Excel에서 읽기 전에 코드를 통해 프로세스를 종료했지만 여전히 오류가 발생합니다. – Pratik

+0

이 링크 확인 https://stackoverflow.com/questions/5855813/npoi-how-to-read-file-using-npoi –

답변

0

문제는 당신이 이름 파일의을 포함 그것을 MemoryStream을 통과하는 동안 HSSFWorkbook의 생성자, 스프레드 시트 파일의내용을 포함하는 스트림을 기대하고 있다는 것입니다. 파일을 읽고 해당 스트림을 HSSFWorkbook 생성자로 전달하려면 FileStream을 사용해야합니다.

은 다음과 같이 그것을 시도 : 파일이를 oter 프로그램에서 열려 있지

IWorkbook hssfwb; 
using (FileStream fs = new FileStream(filepath, FileMode.Open, FileAccess.Read)) 
{ 
    hssfwb = new HSSFWorkbook(fs); 
} 

ISheet sheet = hssfwb.GetSheetAt(0); 
관련 문제