F # 기반 추가 기능의 Excel 명명 된 범위에서 데이터를 가져 오려고합니다. 특정 워크 시트가 아니라 통합 문서의 어디에서나 명명 된 범위를 사용할 수 있기를 원합니다.Excel ThisWorkbook.Names를 읽기 위해 변경 가능하도록 강제?
는let xlRange (xl:Microsoft.Office.Interop.Excel.Application, name:string) =
let name_list = xl.ThisWorkbook.Names:Microsoft.Office.Interop.Excel.Names
let mutable result=null
for n in name_list do
let nn = n :?> Microsoft.Office.Interop.Excel.Name
if nn.Name = name then
let range=nn.RefersToRange
result <- range.Value2 :?> obj[,]
result
위의 코드는 작동하지만이 변경 가능한 긴급한 스타일을 사용했기 때문에 나는 그것을 좋아하지 않는다. 문제는 Excel.Names 컬렉션이 제대로 작동하지 않는다는 것입니다. 예를 들어
let name_seq = Seq.toList name_list
이 유형의 이름은 '유형과 호환되지 않습니다'서열 < '는이>'
이 있습니까이 일을 더 F 번호 관용적 인 방법을 제공합니다 ?
'Seq.toList (Seq.cast name_list)'를 시도해보십시오. 유형을 지정할 수도 있습니다 (예 :'let name_seq : ... = ...'). –