표복사는 어떻게 할수 있을까요?

이 범주에서는 웹한글 기안기에 대한 다른 사용자의 기술 지원을 제공받을 수 있습니다.

안녕하세요
다른 문서를 불러와서 표를 복사할려는데 감이 안잡힙니다

일단 getTextFile settextfile 의 기능은 알고 쓰고는 있는데

표는 ctrl영역으로 복사가 가능할거 같아서 방법을 물어봅니다

Hwpctrl.run(“Copy”) 기능이 있는지 있으면 사용 법이 어찌 될지 물어 봅니다

1개의 좋아요
ctrl = hwp.HeadCtrl
while True:
    if ctrl.UserDesc == "표":
        hwp.SetPosBySet(ctrl.GetAnchorPos(0)
        break
    ctrl = ctrl.Next

hwp.FindCtrl()  # 표 선택됨.
hwp.Run("Copy")  # 표 복사됨

참고해주시기 바랍니다.

안녕하세요.

웹한글 기안기에서는 chrome 보안이슈로 인해 API를 통한 “Copy” 기능을 제공하고 있지 않습니다.

그러면 어떤 방법으로 웹기안기에서 다른 문서의 표를 가져와서 새로운 서식에 똑같이 그릴수 있을까요?

그러면 어떤 방법이 있을까요? 웹기안기에서 표의 누름틀까지 복사가 가능해야하는데요

일반적으로 API를 이용한다면, Selection과 GetTextFile과 SetTextFile을 이용하셔야 합니다.

표를 선택하는 방법은 조건에 따라 두가지 정도의 방법이 있습니다.

  1. 컨트롤을 조회해서 선택
    표가 하나만 존재하거나, 몇번째 표를 복사할지 알고 있는 경우
// user16님 예제코드를 가져왔습니다.
var ctrl = HwpCtrl.HeadCtrl
while (ctrl && ctrl.CtrlID != 0x74626c20) {  // 문서내 컨트롤을 순회하면서 표를 검색
    ctrl = ctrl.Next;
}
if (ctrl && ctrl.CtrlID != 0x74626c20) {
    HwpCtrl.SetPosBySet(ctrl.GetAnchorPos(0));
    HwpCtrl.Run("SelectCtrlFront"); // 현 위치를 기준으로 뒤쪽에 있는 컨트롤을 선택함
}
  1. 표의 셀에 필드가 있을 때 MoveToField를 활용해서 선택
HwpCtrl.MoveToField("필드명", true, true, false); // 표 내 필드로 이동
HwpCtrl.Run("CloseEx"); // 표 밖으로 캐럿을 이동
HwpCtrl.Run("SelectCtrlReverse"); // 현 위치를 기준으로 앞쪽의 컨트롤을 선택함

이후 GetTextFile과 SetTextFile을 이용하여 표를 복사하면 됩니다.

var data;
HwpCtrl.GetTextFile("HWP", "saveblock;", function(x) {
    data = x;
});
// ... GetTextFile의 결과를 붙일 문서를 연 뒤...
HwpCtrl.SetTextFile(data, "HWP", "insertfile;" x => console.log(x));
1개의 좋아요

표는 문서 맨 상단에 위치합니다

표의 누름틀이 많아서 첫번쨔 누름틀에 필드를 이동후 closeex 와 selectctrlreverse 하고 gettextfile 을 썻는데 빈값으로 나오네요

문서 상단의 표만 개채선택할려면 어떻게 해야할까요

표는 문서 맨 상단에 위치합니다

표의 누름틀이 많아서 첫번쨔 누름틀에 필드를 이동후 closeex 와 selectctrlreverse 하고 gettextfile 을 썻는데 빈값으로 나오네요

문서 상단의 표만 개채선택할려면 어떻게 해야할까요
[

GetTextFile() 호출 전에 표가 선택되었는지 확인해보시기 바랍니다.
선택이 안되어 있다면, API를 순서대로 실행해보면서, 캐럿이 잘 이동되고 있는지 확인해보시기 바랍니다.

테이블 표 전체 셀블록 할려면 어떻게 해야할까요?

표의 특정 셀 안에 캐럿이 있다는 가정하에 다음과 같이 동작하면 전체 셀이 선택됩니다.

HwpCtrl.Run("TableCellBlock");
HwpCtrl.Run("TableCellBlockExtend");
HwpCtrl.Run("TableCellBlockExtend");