web-dev-qa-db-ja.com

Excel相互運用-範囲内のすべての境界線を描画します

Microsoftのドキュメントを見ると、「xlBordersIndex」プロパティを使用してセルの特定の境界線の端にアクセスでき、たとえば、セルの左端の境界線スタイルを設定できます。

range.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft].LineStyle =     Excel.XlLineStyle.xlContinuous;

しかし、すべての境界線を描画したい場合はどうなりますか?私が試してみました

range.BorderAround2();

しかし、それは私が理解している範囲自体の周りにボックスを描くだけです。それで私は試しました

range.Cells.BorderAround2();

範囲内の各セルを通過し、各セルの周囲にすべての境界線を配置すると考えます。これは発生したことではありません。したがって、範囲内のすべてのセルの周りにすべての境界線を取得するには、4つの境界線インデックスのそれぞれに手動でアクセスする必要がありますか?

12
spickles
private void AllBorders(Excel.Borders _borders)
    {
        _borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle = Excel.XlLineStyle.xlContinuous;
        _borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle = Excel.XlLineStyle.xlContinuous;
        _borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle = Excel.XlLineStyle.xlContinuous;
        _borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Excel.XlLineStyle.xlContinuous;
        _borders.Color = Color.Black;
    }
20
spickles
oRange = SHEET2.get_Range("a1", "a10");
oRange.Borders.get_Item(Excel.XlBordersIndex.xlEdgeLeft).LineStyle = Excel.XlLineStyle.xlContinuous;
oRange.Borders.get_Item(Excel.XlBordersIndex.xlEdgeRight).LineStyle = Excel.XlLineStyle.xlContinuous;
oRange.Borders.get_Item(Excel.XlBordersIndex.xlInsideHorizontal).LineStyle = Excel.XlLineStyle.xlContinuous;
oRange.Borders.get_Item(Excel.XlBordersIndex.xlInsideVertical).LineStyle = Excel.XlLineStyle.xlContinuous;
7
E Coder

C#にはまだ詳しくありませんが、VBAにはRange.Borders(xlInsideVertical)およびRange.Borders(xlInsideHorizontal)プロパティがあります。マクロレコーダーを使用し、すべてのブック領域にすべての境界線を適用してみてください。おそらくそれは役立つでしょう。

6
Peter L.

ついにできた。私はパフォーマンスにも影響を与えずにこれを行いました。私はここで説明するために簡単なエクセルを取っています:

enter image description here

exRangeで動的に変数に範囲をA1:C4として変数に格納し、以下のコードを使用して境界を指定しました

((Range)excelSheet.get_Range(exRange)).Cells.Borders.LineStyle = XlLineStyle.xlContinuous;


enter image description here

4
Sarath Avanavu
Microsoft.Office.Interop.Excel.Range tRange = xlWorkSheet.UsedRange;
        tRange.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
        tRange.Borders.Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin;
1
Rakesh Kumar
For Each range In ranges
    For Each row As Range In .Range(range).Rows
        row.Cells.BorderAround(XlLineStyle.xlContinuous)
        row.Cells.Borders.Item(XlBordersIndex.xlInsideHorizontal).LineStyle = XlLineStyle.xlContinuous
        row.Cells.Borders.Item(XlBordersIndex.xlInsideVertical).LineStyle = XlLineStyle.xlContinuous
    Next
Next
1
Isla

なぜ単純にしないのですか?

Excel.Range tRange = xlWorkSheet.UsedRange;
tRange.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;
tRange.Borders.Weight = Excel.XlBorderWeight.xlThin;

注:関数。UsedRange()を使用して範囲を取得するには、データで満たされた行とセル(範囲)の後に境界線を適用します

1
X-Coder