사용자가 일부 셀에 텍스트 상자가있는 Excel 문서를 제공했습니다. Excel 응용 프로그램을로드하고 워크 시트를 가져온 다음 사용 된 범위를 반복하는 일반적인 설치 코드가 있습니다. 텍스트 상자가 들어있는 셀의 값을 가져 오려고하면 값은 null입니다.Excel 셀의 텍스트 상자 값 가져 오기
foreach (Range row in usedRange.Rows) {
object[,] valueArray = (object[,])row.get_Value(XlRangeValueDataType.xlRangeValueDefault);
var value = valueArray[1,10]; // This is null for textbox cells
}
Excel 워크 시트에 나타나는 텍스트 상자의 값을 가져와야하는 특별한 방법이 있습니까? 수정 및 설명
모양을 반복의 Stewbob의 제안에
편집 올바른 방향으로 저를 얻었다. 그러나 다음 코드를 사용하여, 나는 널 (null) 예외를 얻고 있었다 :
for (int i=1; i<shapes.Count;i++){
var item = shapes.Range[i].Item(1);
string myString = item.TextFrame2.TextRange.Characters.Text.ToString();
}
간략한에서 개체보고 후, 나는 모양에 대해 뭔가 이상한 나타났습니다. 그것은 msoOLEControlObject 유형입니다. 이 Excel 문서의 값은 잘라내어 웹 페이지에서 Excel로 붙여 넣습니다. Excel에서 텍스트 상자가 아니라 OLE 상자가 만들어졌습니다. 당신은 값 속성이 아닌 TextRange 속성을 확인 붙이기를 처리하는 경우
var shapes = ws.Shapes;
for (int i=1; i<shapes.Count;i++){
var item = shapes.Range[i].Item(1);
var myText = item.OLEFormat.Object;
if (myText.Object != null) {
if (myText.Object.Value != null) {
Console.WriteLine(myText.Object.Value.ToString());
}
}
}
그래서 확인 : 나는 등의 텍스트 상자 값에 액세스 할 수 있도록 OLE 상자는 '가치'속성을 가지고 있었다.