Excel 邊框透過 Range.Borders 集合設定,或單一邊框 Range.BorderAround。本文示範逐儲存格設定 BorderAround (適合不規則區域)。
// 變數宣告
LPDISPATCH pDisp;
CString cellAddr;
_variant_t vLineStyle, vWeight, vColorIndex, vColor;
Range range; // 包裝類別
// 計算儲存格位址 (A1, B1... AA1, AB1...)
int col = j; // 0-based
int row = i + 1; // 1-based, 假設標題列在第 0 行
if (col < 26) cellAddr.Format(_T("%c%d"), 'A' + col, row);
else cellAddr.Format(_T("%c%c%d"), 'A' + col/26 - 1, 'A' + col%26, row);
// 取得 Range 物件
pDisp = worksheet.GetRange(COleVariant(cellAddr));
range.AttachDispatch(pDisp, TRUE); // TRUE: 自動 ReleaseDispatch
// 對齊方式
COleVariant vAlign((short)-4108); // xlCenter
range.SetHorizontalAlignment(vAlign);
range.SetVerticalAlignment(vAlign);
// 邊框設定:BorderAround (外框)
vLineStyle.vt = VT_I2; vLineStyle.lVal = 1; // 1=實線, 2=大虛線, 3=小虛線, 4=點線, 5=虛點線, 6=雙線
vWeight.vt = VT_I2; vWeight.lVal = 2; // 1=細, 2=中, 3=粗, 4=極粗
vColorIndex.vt = VT_I2; vColorIndex.lVal = 1; // 1=黑, 2=白, 3=紅, 4=綠, 5=藍, 6=黃...
vColor.vt = VT_UI4; vColor.uintVal = RGB(0,0,0); // ColorIndex 優先,Color 為 RGB 覆蓋
range.BorderAround(vLineStyle, vWeight, vColorIndex, vColor);
// 寫入值
CString val = GetCellData(i, j);
if (!val.IsEmpty()) range.SetValue(COleVariant(val));
range.ReleaseDispatch(); // 釋放介面指標
| 屬性 | 值 | 說明 |
|---|---|---|
| LineStyle | 1 | xlContinuous (實線) |
| 2 | xlDash (虛線) | |
| 3 | xlDot (點線) | |
| 4 | xlDashDot (虛點線) | |
| 5 | xlDashDotDot (虛點點線) | |
| 6 | xlDouble (雙線) | |
| -4142 | xlLineStyleNone (無) | |
| Weight | 1 | xlHairline (極細) |
| 2 | xlThin (細) | |
| 3 | xlMedium (中) | |
| 4 | xlThick (粗) | |
| ColorIndex | 1..56 | 調色盤索引 (1=黑, 2=白, 3=紅...) |
Range("A1:Z100").Borders.LineStyle = xlContinuous 一次套用整個區塊。app.SetScreenUpdating(FALSE) 操作結束 TRUE。