c# - teclado - como modificar el alto de una fila en excel
¿Cómo establecer correctamente el ancho de columna al crear un archivo de Excel?(Propiedades de la columna) (6)
Este enlace explica cómo aplicar un estilo de celda a un rango de celdas: http://msdn.microsoft.com/en-us/library/f1hh9fza.aspx
Ver este fragmento de código:
Microsoft.Office.Tools.Excel.NamedRange rangeStyles =
this.Controls.AddNamedRange(this.Range["A1"], "rangeStyles");
rangeStyles.Value2 = "''Style Test";
rangeStyles.Style = "NewStyle";
rangeStyles.Columns.AutoFit();
Estoy usando la biblioteca estándar
using Excel = Microsoft.Office.Interop.Excel;
Y así es como creo Excel, solo una pequeña parte del código:
//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";
El problema es que a veces el tamaño de la celda puede ser más pequeño que el tamaño del texto. Probé este:
Excel.Range chartRange;
chartRange.EntireColumn.ColumnWidth = 31.43;
Funciona bien, pero necesito establecer esta propiedad para cada columna por separado. ¿Cómo puedo hacer eso?
Excel ColumnWidth de dataGridView:
foreach (DataGridViewColumn co in dataGridView1.Columns)
{ worksheet.Columns[co.Index + 1].ColumnWidth = co.Width/8; }
He cambiado el ancho de todas las columnas en mi caso como
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;
Nota: Las columnas en la hoja de trabajo comienzan con 1 no desde 0 como en Arrary.
Lo hice de esta manera:
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();
De esta manera, las columnas siempre se ajustan al ancho del texto dentro de las celdas.
Espero que ayude a alguien!
Normalmente hago esto en vb y es más fácil porque Excel graba macros en vb. Entonces, lo que normalmente hago, voy a sobresalir y guardar la macro que quiero hacer.
Así que eso es lo que hice ahora y obtuve este código:
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;
Creo que puedes hacer algo como esto:
xlWorkSheet.Columns[5].ColumnWidth = 18;
Para su última pregunta, lo que debe hacer es recorrer las columnas en las que desea establecer su ancho:
for (int i = 1; i <= 10; i++) // this will aply it form col 1 to 10
{
xlWorkSheet.Columns[i].ColumnWidth = 18;
}
Espero eso ayude
Ver este fragmento: (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";