c# 표 만들기 에러 (c# 코드)

c# 표 만들기 에러에서 토론 계속하기:

댓글 달고 나서 추가댓글/수정 하는 방법을 몰라서 ㅠㅠ… 부득이 새 글 쓰기로 하였습니다.

기본적으로 제가 사용하고는 방식은.

C#에서(visual studio 2022) 새 프로젝트 만들기 - Windows Form 앱(.NET FrameWork) C#
해서(프레임워크는 4.7.2 사용(프레임워크 버전은 상관 없는걸로 알고 있습니다.)

참조 - 참조 추가 - COM - HwpObject 1.0 Type Library 체크 해서 사용

public partial class Form1 : Form
{
public HwpObject hwp = new HwpObject(); // HwpObject hwp 선언

    public Form1()
    {
        InitializeComponent();
        init();
    }

    // 현재 커서 위치 정보 확인
    private int[] cursorInfo(HwpObject hwp)
    {
        int seccnt = 0; // 총 구역
        int secno = 0; // 현재 구역
        int prnpageno = 0; // 쪽
        int colno = 0; //단
        int line = 0; //줄
        int pos = 0; //칸
        short over = 0; //삽입/ 겹침
        string ctrlname = "";        //컨트롤 종류
        hwp.KeyIndicator(out seccnt, out secno, out prnpageno, out colno, out line, out pos, out over, out ctrlname);
        Debug.WriteLine("총 구역 : " + seccnt);
        Debug.WriteLine("현재 구역 : " + secno);
        Debug.WriteLine("쪽 : " + prnpageno);
        Debug.WriteLine("단: " + colno);
        Debug.WriteLine("줄: " + line);
        Debug.WriteLine("칸: " + pos);
        Debug.WriteLine("컨트롤 종류: " + ctrlname);
        int[] cursor_info = new int[6];
        cursor_info[0] = seccnt;
        cursor_info[1] = secno;
        cursor_info[2] = prnpageno;
        cursor_info[3] = colno;
        cursor_info[4] = line;
        cursor_info[5] = pos;
        return cursor_info;     // 배열로 리런 [총구역, 현재구역, 쪽, 단, 줄, 칸, 컨트롤 종류]
    }

    // 한글 문서에 문장 입력
    private void typing(HwpObject hwp, string sss)
    {
        var act = hwp.CreateAction("InsertText");
        var pset = act.CreateSet();
        hwp.Run("BreakPara");       //문단 나누기(Enter)
        pset.SetItem("Text", sss);
        act.Execute(pset);
        Debug.WriteLine(cursorInfo(hwp));
    }

    // textBox의 텍스트를 아래한글에 입력하기
    private void button1_Click(object sender, EventArgs e)
    {
        typing(hwp, textBox1.Text);
    }
    
    //여백 
    private void button2_Click(object sender, EventArgs e)
    {
        setMargin(hwp, 23, 23, 18, 18, 15, 15);
    }


    //여백 설정
    private void button3_Click(object sender, EventArgs e)
    {
        setMargin(hwp, 23, 23, 18, 18, 15, 15);
    }


    private void setMargin(HwpObject hwp, float left, float right, float top, float bottom, float header, float footter)
    {
        hwp.HAction.GetDefault("PageSetup", hwp.HParameterSet.HSecDef.HSet);
        hwp.HParameterSet.HSecDef.PageDef.LeftMargin = hwp.MiliToHwpUnit(left);
        hwp.HParameterSet.HSecDef.PageDef.RightMargin = hwp.MiliToHwpUnit(right);
        hwp.HParameterSet.HSecDef.PageDef.TopMargin = hwp.MiliToHwpUnit(top);
        hwp.HParameterSet.HSecDef.PageDef.BottomMargin = hwp.MiliToHwpUnit(bottom);
        hwp.HParameterSet.HSecDef.PageDef.HeaderLen = hwp.MiliToHwpUnit(header);
        hwp.HParameterSet.HSecDef.PageDef.FooterLen = hwp.MiliToHwpUnit(footter);
        hwp.HParameterSet.HSecDef.HSet.SetItem("ApplyClass", 24);
        hwp.HParameterSet.HSecDef.HSet.SetItem("ApplyTo", 3);
        hwp.HAction.Execute("PageSetup", hwp.HParameterSet.HSecDef.HSet);
    }

위 코드 처럼 HwpObject 변수 hwp 를 생성해서 함수에 전달하는 형식으로 사용하고 있습니다.
버튼 눌렀을때 한글에 텍스트 입력하는 함수, 편집용지 여백 설정 함수, 커서 정보 확인 하는 함수들도 잘 작동합니다.
근데… 표 만들기가 파이썬에서는 잘 되던게… 안되네요 ㅠㅠ

1개의 좋아요

nuristar 님이 해결하신 글 댓글로 남겨두겠습니다 …! ㅎㅎ
많은 정보 감사드립니다 ~!

hwp.HParameterSet.HTableCreation.ColWidth.SetItem(0, hwp.MiliToHwpUnit(70.4)); <— 여기서 에러
이 부분에서 SetItem을 아래처럼 바꾸니까 실행되네요…
hwp.HParameterSet.HTableCreation.ColWidth.item[0] = hwp.MiliToHwpUnit(width / 2);
setItem(0, … ) 대신에 item[0] = … 으로

1개의 좋아요