如何在创buildExcel文件时正确设置列宽? (列属性)

我正在使用标准库

using Excel = Microsoft.Office.Interop.Excel; 

这就是我创buildExcel的一小部分代码:

 //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中loggingmacros。 所以我通常做的我去excel和保存我想要做的macros。

这就是我现在做的,我得到了这个代码:

 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 (i=1; i<=10; i++) // this will aply it form 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; 

注:工作表中的列以1开始,而不是从Arrary开始。

看这个片段:(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";