2016-06-28 2 views
1

간단한 질문이지만 성공하지 못했습니다. 값을 가진 행과 열의 루프를 사용하여 실행해야합니다.Excel에서 행을 채우고 채우기 행 (값이있는 행과 열)

나는 그것을 할 수있는 함수를 작성하지만, 디버그와 나는 행 번호가 1048576 인 계산 것을 확인하고 파일 값이 단지 32 개 행을 (같은이 열이 발생)

기능 코드가 있습니다

let functionParseXmlToCsv (xmlFile:string , excelFormatFile:string , excelPath:string) = 

    let xlApp = new Excel.ApplicationClass() 
    let xlWorkBookInput = xlApp.Workbooks.Open(excelPath + DateTime.Today.ToString("yyyy_dd_MM")+".xlsx") 
    let listOfRows = ResizeArray<string>() 

    for tabs in 1 .. xlWorkBookInput.Worksheets.Count do 

     let listOfCells = ResizeArray<string>() 

     let xlWorkSheetInput = xlWorkBookInput.Worksheets.[tabs] :?> Excel.Worksheet 

     let filePath = excelPath + DateTime.Today.ToString("yyyy_dd_MM")+"_"+xlWorkSheetInput.Name+".csv" 

     //let csvFile = File.Create(filePath) 

     use csvFile = StreamWriter(filePath, true) 

     for rowNumber in 1 .. xlWorkSheetInput.Rows.Count do 


      for columnNumber in 1.. xlWorkSheetInput.Columns.Count do 

       let cell = xlWorkSheetInput.Cells.[rowNumber,columnNumber] 

       let value = string cell 

       listOfCells.Add(value) 

      let s = String.Join(", ", listOfCells) 

      csvFile.WriteLine(s) 

    File.Exists(excelPath + DateTime.Today.ToString("yyyy_dd_MM")+".xlsx") 

나를 도와 줄 수 있습니까?

답변

3

UsedRange이 문제를 해결하면 시도해보십시오. 나는 공식 값으로 사용할 수 없습니다 왜 당신이 알고 you.Do 그래서

for rowNumber in 1 .. xlWorkSheetInput.UsedRange.Rows.Count do 

for columnNumber in 1.. xlWorkSheetInput.UsedRange.Columns.Count do 
+0

감사로 행/열 루프를 변경? excel 파일에서 값을 선택해야합니다. 다음과 같은 오류가 있습니다. cell = xlWorkSheetInput.UsedRange.Cells.Formula. [rowNumber, columnNumber] - 필드 항목이 정의되지 않았습니다. – MRah

+0

이해할 수 있을지 잘 모르겠습니다. 당신이 시도하지만 어쩌면 당신은 xlWorkSheetInput.UsedRange.Cells. [rowNumber, columnNumber] .Formula를 찾고 있습니다. – DAXaholic