NPOI 읽기 Excel 데이터 애플리케이션

4953 단어 Excel
NPOI는POI 프로젝트입니다.NET 버전.NPOI를 사용하면 Office나 해당 환경이 설치되지 않은 기기에서 WORD/EXCEL 문서를 읽고 쓸 수 있습니다.NPOI는 POI 3에 구축되어 있습니다.x 버전 위에 있는 것은 Office를 설치하지 않은 상태에서 Word/Excel 문서를 읽고 쓸 수 있습니다.
필요: excel 테이블에서 제공하는 SVN 상대 경로에 따라 로컬의 A 폴더에 포함된 파일을 B 파일로 복사합니다. (A와 B 두 파일 경로가 다른 곳)
분석:
  • excle 문서를 어떻게 읽습니까?(excle에서 지정한sheet 정보를 읽는 방법, 어떤 열의 데이터를 읽는 방법에 따라)
  • 만약 로컬 PS 측이 오피스 소프트웨어를 따르지 않는다면 어떻게 읽습니까?

  • 일반적인 방법은 다음과 같습니다.
    excel 표를 로컬 라이브러리(로컬 데이터베이스로 이해할 수 있음)로 삼아 ADO를 활용합니다.ENT는 다음과 같은 코드로 데이터를 읽습니다.
     //  
    
                string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + fileName + ";Extended Properties=Excel 8.0";
    
                using (OleDbConnection myConn = new OleDbConnection(strCon))
    
                {
    
                    string strCom = " SELECT * FROM [ $] ";
    
                    myConn.Open();
    
                    //
    
                    OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);
    
                    //  DataSet  
    
                    DataSet ds = new DataSet();
    
                    // DataSet  
    
                    myCommand.Fill(ds, "[ $]");
    
                    DataTable dt = ds.Tables[0];
                
    }

    상술한 코드를 통해 우리의 디버깅 과정에서 다음과 같은 몇 가지 문제를 발견하였다
  • excel의 버전을 읽으려면 로컬 excel의provider와 계속 유지해야 한다. (이 상황은 상대적으로 유연하지 않다. 만약에 excel 버전이 바뀌면 다른 설정은 모두 변경해야 한다.)
  • 오류 디버깅 과정이 비교적 번거롭고 소모 시간이 비교적 크다
  • 로컬 오피스 excel 소프트웨어 설치
  • 그러면 기존의 방식으로 조작하는 것이 비교적 번거로운 만큼 다음은 NPOI의 해결 방안을 제공합니다. 코드는 다음과 같습니다.
                using (FileStream sr = new FileStream(fileName, FileMode.OpenOrCreate))
    
                {
    
                    // excel HSSFWorkbook, excel 
    
                    HSSFWorkbook workbook = new HSSFWorkbook(sr);
    
    
    
                    // excel sheet
    
                    Sheet sheet = workbook.GetSheetAt(0);
    
    
    
                    //    
    
                    int rowCount = sheet.LastRowNum;
    
    
    
                    //
    
                    for (int i = 1; i <= sheet.LastRowNum; i++)
    
                    {
    
                        // 2 svn 
    
                        string path = sheet.GetRow(i).GetCell(2).ToString();
    
                        if (!developPaths.Contains(path))
    
                        {
    
                            developPaths.Add(GetDevelopPath(path, copyCodeFileName));
    
                        }
    
                    }
    
    
    
                }

    전통적인 방법에 비해 npoi는 모든 sheet를 당초에table로 만들었는데 코드량이 상대적으로 적고 개발에 대한 요구도 비교적 낮다.
    다음은 NPOI 다운로드 주소입니다.
    http://download.csdn.net/detail/jun118166/7243415

    좋은 웹페이지 즐겨찾기