2009-02-10 60 views
31

Tengo una base de datos que contiene 5 tablas. Cada tabla contiene 24 filas y cada fila contiene 4 columnas.Fusión de celdas en Excel usando C#

Quiero mostrar estos registros en la hoja de Excel. El encabezado de cada tabla es el nombre de la tabla, pero no puedo fusionar las columnas para el encabezado.

Por favor, ayúdame.

Respuesta

46

Al usar Interop, obtiene un rango de celdas y llama al método .Merge() en ese rango.

eWSheet.Range[eWSheet.Cells[1, 1], eWSheet.Cells[4, 1]].Merge(); 
+1

se echa en falta un PARAMETRIZACIÓN se puede poner dentro de 'Type.Missing' – eladyanai

+0

esto no funcionó para mi libro –

3

los fragmentos de código

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private Excel.Application excelApp = null; 
    private void button1_Click(object sender, EventArgs e) 
    { 
     excelApp.get_Range("A1:A360,B1:E1", Type.Missing).Merge(Type.Missing); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     excelApp = Marshal.GetActiveObject("Excel.Application") as Excel.Application ; 
    } 
} 

Gracias

10
oSheet.get_Range("A1", "AS1").Merge(); 
0

toman una lista de cadena como como

List<string> colValListForValidation = new List<string>(); 

y cadena de coincidencia antes de la tarea. que le ayudará a bcz toda combinar celdas tendrán el mismo valor

7
Excel.Application xl = new Excel.ApplicationClass(); 

Excel.Workbook wb = xl.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorkshe et); 

Excel.Worksheet ws = (Excel.Worksheet)wb.ActiveSheet; 

ws.Cells[1,1] = "Testing"; 

Excel.Range range = ws.get_Range(ws.Cells[1,1],ws.Cells[1,2]); 

range.Merge(true); 

range.Interior.ColorIndex =36; 

xl.Visible =true; 
+1

Gracias por todos los detalles :) – Missy

1

Esto resuelve el problema de la manera apropiada

// Merge a row 
      ws.Cell("B2").Value = "Merged Row(1) of Range (B2:D3)"; 
      ws.Range("B2:D3").Row(1).Merge(); 
1

Puede utilizar Microsoft.Office.Interop.Excel:

worksheet.Range[worksheet.Cells[rowNum, columnNum], worksheet.Cells[rowNum, columnNum]].Merge();

puede también utilizar NPOI:

var cellsTomerge = new NPOI.SS.Util.CellRangeAddress(firstrow, lastrow, firstcol, lastcol); 
_sheet.AddMergedRegion(cellsTomerge); 
3

Puede usar NPOI para hacerlo.

Workbook wb = new HSSFWorkbook(); 
Sheet sheet = wb.createSheet("new sheet"); 

Row row = sheet.createRow((short) 1); 
Cell cell = row.createCell((short) 1); 
cell.setCellValue("This is a test of merging"); 

sheet.addMergedRegion(new CellRangeAddress(
     1, //first row (0-based) 
     1, //last row (0-based) 
     1, //first column (0-based) 
     2 //last column (0-based) 
)); 

// Write the output to a file 
FileOutputStream fileOut = new FileOutputStream("workbook.xls"); 
wb.write(fileOut); 
fileOut.close(); 
1
Worksheet["YourRange"].Merge(); 
+1

mientras este fragmento de código puede ser la solución , [incluyendo una explicación] (// meta.stackexchange.com/questions/114762/explaining-entirely- code-based-answers) realmente ayuda a mejorar la calidad de su publicación. Recuerde que usted está respondiendo la pregunta a los lectores en el futuro, y es posible que esas personas no sepan los motivos de su sugerencia de código. – Adam

Cuestiones relacionadas