var
workbook,sheet,excelObj,excel: OleVariant;
begin
excelObj := CreateOleObject('excel.sheet');
excel := excelObj.Application;
workbook := excel.workbooks.open(filePath);//打開某個文件
sheet := workbook.sheets[1];
Excel.ActiveWindow.WindowState := -4137;
Sheet.Range['A1', 'C3'].Select;//選擇範圍
Excel.Selection.HorizontalAlignment := xlCenter;//水平和垂直居中
Excel.Selection.VerticalAlignment := xlCenter;
Excel.Selection.MergeCells := True;//合並單元格
excel.visible := true;
end;
private void MergeRow2(Grid grid, string colNum, int startRow)
{
string oldStr = string.Empty;
int mergeStartRow = -1;
string[] cols = colNum.Split('|');
string oldNum = string.Empty;
int rowMak = startRow;
for (int i = 0; i < cols.Length; i++)
{
int col = int.Parse(cols[i]);
startRow = rowMak;
if (col != 1)
{
for (int row = startRow; row < grid.Rows; row++)
{
string newNum = grid.Cell(startRow, 1).Text.Trim();
string newStr = grid.Cell(startRow, col).Text.Trim();
if (oldStr == "")
{
oldStr = newStr;
oldNum = newNum;
startRow += 1;
}
else
{
if (newNum == oldNum && oldStr == newStr)
{
grid.Range(startRow, col, startRow - 1, col).Merge();
}
oldStr = newStr;
oldNum = newNum;
startRow += 1;
}
}
}
else
{
for (int j = 0; j < cols.Length; j++)
{
for (int row = 1; row < grid.Rows; row++)
{
string newStr = grid.Cell(row, col).Text.Trim();
if (oldStr != newStr)
{
// 先合並
if ((mergeStartRow > -1) && (row - 1 > mergeStartRow))
{
grid.Range(mergeStartRow, col, row - 1, col).Merge();
}
// 後賦值
oldStr = newStr;
mergeStartRow = row;
}
}
}
}
}
}