programing

Excel 파일 생성 시 Column Width를 올바르게 설정하는 방법(Column 속성)

elecom 2023. 4. 13. 20:31
반응형

Excel 파일 생성 시 Column Width를 올바르게 설정하는 방법(Column 속성)

표준 라이브러리를 사용하고 있습니다.

using Excel = Microsoft.Office.Interop.Excel;

Excel을 작성하는 방법은 다음과 같습니다.코드의 극히 일부입니다.

//Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
Excel._Application xlApp = new Excel.Application();

xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

//add data 
xlWorkSheet.Cells[1, 1] = "";
xlWorkSheet.Cells[1, 2] = "Student1";
xlWorkSheet.Cells[1, 3] = "Student2";
xlWorkSheet.Cells[1, 4] = "Student3";

문제는 셀 크기가 텍스트 크기보다 작을 수 있다는 점이다.이거 먹어봤어.

Excel.Range chartRange;
chartRange.EntireColumn.ColumnWidth = 31.43;

정상적으로 동작하지만 각 열에 대해 이 속성을 별도로 설정해야 합니다.어떻게 하면 될까요?

저는 보통 VB로 하고 Excel은 VB에 매크로를 기록하기 때문에 더 쉽습니다.그래서 저는 보통 엑셀에 가서 하고 싶은 매크로를 저장합니다.

그게 제가 지금 하고 있는 일이었고, 이 코드를 얻었습니다.

Columns("E:E").ColumnWidth = 17.29;

Range("E3").Interior.Pattern = xlSolid;
Range("E3").Interior.PatternColorIndex = xlAutomatic;
Range("E3").Interior.Color = 65535;
Range("E3").Interior.TintAndShade = 0;
Range("E3").Interior.PatternTintAndShade = 0;

다음과 같은 작업을 수행할 수 있습니다.

xlWorkSheet.Columns[5].ColumnWidth = 18;

마지막 질문에서는 너비를 설정하는 컬럼을 루프합니다.

for (int i = 1; i <= 10; i++) // this will apply it from col 1 to 10
{
    xlWorkSheet.Columns[i].ColumnWidth = 18;
}

나는 이렇게 했다:

var xlApp = new Excel.Application();
var xlWorkBook = xlApp.Workbooks.Add(System.Reflection.Missing.Value);
var xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.Item[1];
xlWorkSheet.Columns.AutoFit();

이렇게 하면 열은 항상 셀 내부의 텍스트 너비에 맞춥니다.

누군가에게 도움이 되었으면 좋겠다!

다음 링크에서는 셀 스타일을 셀 범위에 적용하는 방법을 설명합니다.http://msdn.microsoft.com/en-us/library/f1hh9fza.aspx

다음 스니펫을 참조:

Microsoft.Office.Tools.Excel.NamedRange rangeStyles =
this.Controls.AddNamedRange(this.Range["A1"], "rangeStyles");

rangeStyles.Value2 = "'Style Test";
rangeStyles.Style = "NewStyle";
rangeStyles.Columns.AutoFit();

내 경우 모든 열 너비를 다음과 같이 변경했습니다.

            worksheet.Columns[1].ColumnWidth = 7;
            worksheet.Columns[2].ColumnWidth = 15;
            worksheet.Columns[3].ColumnWidth = 15;
            worksheet.Columns[4].ColumnWidth = 15;
            worksheet.Columns[5].ColumnWidth = 18;
            worksheet.Columns[6].ColumnWidth = 8;
            worksheet.Columns[7].ColumnWidth = 13;
            worksheet.Columns[8].ColumnWidth = 17;
            worksheet.Columns[9].ColumnWidth = 17;

참고: 워크시트의 열은 Arary와 같이 0부터 시작하는 것이 아니라 1로 시작합니다.

이것을 사용하다

 ((Excel.Range)oSheet.Cells[1, 1]).EntireColumn.ColumnWidth = 10;

dataGridView의 Excel 열폭:

           foreach (DataGridViewColumn co in dataGridView1.Columns)
           { worksheet.Columns[co.Index + 1].ColumnWidth = co.Width/8; }

다음 스니펫 참조: (C#)

    private Microsoft.Office.Interop.Excel.Application xla;
    Workbook wb;
    Worksheet ws;
    Range rg;
    ..........

        xla = new Microsoft.Office.Interop.Excel.Application();
        wb = xla.Workbooks.Add(XlSheetType.xlWorksheet);
        ws = (Worksheet)xla.ActiveSheet;
        rg = (Range)ws.Cells[1, 2];
        rg.ColumnWidth = 10;
        rg.Value2 = "Frequency";
        rg = (Range)ws.Cells[1, 3];
        rg.ColumnWidth = 15;
        rg.Value2 = "Impudence";
        rg = (Range)ws.Cells[1, 4];
        rg.ColumnWidth = 8;
        rg.Value2 = "Phase";

언급URL : https://stackoverflow.com/questions/20596364/how-to-properly-set-column-width-upon-creating-excel-file-column-properties

반응형