Подтвердить что ты не робот

Как правильно установить ширину столбца при создании файла Excel? (Свойства столбца)

Я использую стандартную библиотеку

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;

Он отлично работает, но мне нужно установить это свойство для каждого столбца отдельно. Как я могу это сделать?

4b9b3361

Ответ 1

Я обычно делаю это в VB, и это проще, потому что Excel записывает макросы в VB. Поэтому я обычно иду в Excel и сохраняю макрос, который хочу сделать.

Так что то, что я сделал сейчас, и я получил этот код:

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;
}

Ответ 2

Я сделал это следующим образом:

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();

Таким образом, столбцы всегда соответствуют ширине текста внутри ячеек.

Надеюсь, это поможет кому-то!

Ответ 3

В этой ссылке объясняется, как применить стиль ячейки к диапазону ячеек: 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();

Ответ 4

Я меняю ширину столбцов в моем случае как

            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;

Примечание. Столбцы на листе начинаются с 1 не из 0, как в произвольном.

Ответ 5

Смотрите этот фрагмент: (С#)

    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";

Ответ 6

Excel ColumnWidth из dataGridView:

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

Ответ 7

Используйте этот

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