2013-12-15 11 views
14

(列のプロパティ):Excelファイルの作成時に列幅を正しく設定する方法は?私は標準ライブラリ</p> <pre><code>using Excel = Microsoft.Office.Interop.Excel; </code></pre> <p>を使用していますが、これは私がエクセル、コードのほんの一部を作成する方法である

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

それはうまく動作しますが、私はこのプロパティを別々に設定する必要があります。どのように私はそれを行うことができますか?

+1

優れたマクロを保存することを学びます。そうすれば、必要なすべてのコードを手に入れることができます。私は私の答えで何をしたのかわかりません。マクロを保存して私の結果をあなたに伝えます。録音を開始するだけで簡単に録音し、録音したいものをExcelで処理してから、コードを取得します。そのとても強力で便利な –

+0

アドバイスありがとう、私はそれについてかなり良い記事を見つけたhttp://blogs.msdn.com/b/csharpfaq/archive/2010/09/28/converting-a-vba-macro-to- c-4-0.aspx – Rocketq

答えて

27

私は通常vbでこれを行います。これは、vbでExcelマクロを記録するので簡単です。だから、私が通常やっていることは、私がやりたいマクロを秀でて保存することです。

だから私は今、何をしたかのthatsと私はこのコードを持って:あなたは何をする必要があるか、あなたの最後の質問について

xlWorkSheet.Columns[5].ColumnWidth = 18 

ループです:私はあなたがこのような何かを行うことができますすることは考えて

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 

をあなたはそれらの幅を設定したい列の谷:

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

は、それが

を役に立てば幸い
+1

'xlWorkSheet.Columns [5]。ColumnWidth = 18; 'これは正常に動作します)) – Rocketq

+0

私のためには機能しません。このコード(_xlSheetは私のワークシートです)は、 "ColumnWidth"メンバを認識しません: xlSheet.Columns [ITEMDESC_COL]。 –

+0

そして今、それは動作します(コンパイル、とにかく - まだテストしていません)。私はforループでこれを持っています: _xlSheet.Columns [i] .ColumnWidth = 12.75; なぜこれら2つのインスタンスの違い、私は知らない... –

3

このリンクは、セルの範囲にセルスタイルを適用する方法について説明します:http://msdn.microsoft.com/en-us/library/f1hh9fza.aspx

はこのスニペットを参照してください:この方法では

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

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

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

私はこのようにそれをやりました列は常にセル内のテキスト幅に収まります。

誰かに役立つことを願っています!

+0

正確に私が欲しかったのは:) – Rama

0

このスニペットを参照してください:ワークシートの列がない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"; 
1

私はすべての列が

  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; 

として、私の場合には注意を幅の変化を持っています。 DataGridViewのから

0

エクセルcolumnWidthの:

  foreach (DataGridViewColumn co in dataGridView1.Columns) 
      { worksheet.Columns[co.Index + 1].ColumnWidth = co.Width/8; } 
関連する問題

 関連する問題