2017-11-21 24 views
-1

.NET에서 코딩하지 않고 PresentationCore 어셈블리의 System.Windows.Clipboard을 사용하여 시스템 클립 보드에 액세스하여 Excel에 복사 된 정보를 붙여 넣습니다.System.Windows.Clipboard에 붙여 넣은 응용 프로그램을 확인하는 방법은 무엇입니까?

Excel에서 클립 보드로 복사 할 때 System`Windows`Clipboard`GetText[]으로 텍스트로 검색 할 수 있습니다. 이 텍스트는 내 코드 (Wolfram Language)에서 구문 분석하고 소비 할 수있는 TSV 파일 형식을 따릅니다.

System.Windows.Clipboard을 쿼리하여 Excel이 현재 데이터를 붙여 넣은 응용 프로그램인지 여부를 확인할 수있는 방법이 있습니까?

내 코드에서 붙여 넣기 작업을 제한하여 클립 보드의 데이터가 Excel에서 왔는지 평가하고 싶습니다. 온라인 MSDN 설명서 페이지를 살펴 보았지만이 정보를 제공하는 방법을 알지 못했습니다.

답변

1

대신 GetText(TextDataFormat.CommaSeparatedValue)을 사용하여 클립 보드 내용이 실제로 CSV인지 여부를 확인할 수 있어야합니다. 이렇게하면 Excel에서 복사했는지 또는 Google 문서 도구 또는 OpenOffice Calc에서 복사했는지 전혀 신경 쓸 필요가 없습니다.

+0

'TabSeparatedValue' 열거 형이 있습니까? 'TextDataFormat' MSDN 페이지에서 눈치 채지 못했지만 때로는 속임수가 있습니다. 내 관심사는 붙여 넣기가 텍스트 셀을 포함 할 수 있으며 이러한 셀에 쉼표가 포함될 수 있으므로 추가 열이 생성 될지 걱정됩니다. 그러나 빠른 테스트를 통해 이것이 문제를 처리 할 수 ​​있음을 나타냅니다. 그러나 나는 회의적이다. – Edmund

+0

CSV에는 따옴표에 대한 조항이 있으며 구분 기호 나 줄 바꿈이있는 셀에는 사용되지 않으면 놀랄 것입니다. 일반적으로 매쓰 매 티카는 구분 기호가 쉼표인지 탭인지 상관하지 않아야합니다. 클립 보드에서 CSV를 가져 오는 미리 정의되고 지원되는 방법이 있지만 TSV에는 사용할 수 없기 때문에 CSV가 여기에서 더 쉬워야합니다. – Joey

+0

다른 형식의 Excel 복사 데이터와 협력하고있는 것으로 보입니다. 감사. – Edmund

1

System.Windows.Clipboard가 원본을 추적하지 않습니다.

Form.ActiveControl을 사용하여 Excel이 활성화되어 있는지 확인한 다음 Ctrl + C 명령이나 컨텍스트 메뉴에서 복사를 수신 할 수 있습니다. 따라서 복사 된 데이터의 원본을 찾는 대신 Excel을보고 데이터가 복사되는지 확인해야합니다.

소스를 신경 쓰지 않고 TSV 만 원할 경우 복사 된 데이터를 구문 분석하여 TSV인지 확인하고 적절하게 처리 할 수 ​​있습니다.

+0

모니터링 엑셀은 닷넷 (Wolfram 언어 사용)을 코딩하지 않고 너무 깊이 들어가고 싶지 않기 때문에 조금만입니다. 현재 TSV로 클립 보드에있는 것은 무엇이든 파싱을 시도하지만 그것에 대해 더 많은 징계를 모색 중입니다. 귀하의 답변에 감사드립니다. (+1) – Edmund

+0

기대하는 값의 유형을 알고있는 경우 값이 X 문자 다음에 스키마와 일치하지 않으면 값을 파싱하고 파싱을 중단 할 수 있습니다. – JRodge01