標準ライブラリを使用しています
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でマクロを記録するため、その方が簡単です。だから、通常は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;
}
私はこのようにしました:
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;
注:ワークシートの列は、Arraryのように0からではなく1から始まります。
このスニペットを参照してください:(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";
DataGridViewからのExcel ColumnWidth:
foreach (DataGridViewColumn co in dataGridView1.Columns)
{ worksheet.Columns[co.Index + 1].ColumnWidth = co.Width/8; }
これを使用
((Excel.Range)oSheet.Cells[1, 1]).EntireColumn.ColumnWidth = 10;