2009-02-10 46 views
31

Ho un database che contiene 5 tabelle. Ogni tabella contiene 24 righe e ogni riga contiene 4 colonne.Unione di celle in Excel utilizzando C#

Desidero visualizzare questi record nel foglio Excel. L'intestazione di ogni tabella è il nome della tabella, ma non riesco a unire le colonne per l'intestazione.

Per favore aiutatemi.

risposta

46

Utilizzando l'intervallo si ottiene un intervallo di celle e si chiama il metodo .Merge() su tale intervallo.

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

ti manca un parametrizzazione si può mettere dentro 'Type.Missing' – eladyanai

+0

questo non ha funzionato per il mio lavoro –

3

frammento di codice

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

Grazie

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

assumono un elenco di stringa come come

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

e la stringa partita prima del compito. vi aiuterà a BCZ tutti unire le celle avranno lo stesso valore

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

Grazie per tutti i dettagli :) – Missy

1

Questo risolve il problema in modo appropriato

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

È possibile utilizzare Microsoft.Office.Interop.Excel:

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

È inoltre possibile utilizzare NPOI:

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

È possibile utilizzare NPOI per farlo.

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

Anche se questo frammento di codice può essere la soluzione , [compresa una spiegazione] (// meta.stackexchange.com/questions/114762/explaining-entely- code-based-answers) aiuta davvero a migliorare la qualità del tuo post. Ricorda che stai rispondendo alla domanda per i lettori in futuro, e queste persone potrebbero non conoscere le ragioni del tuo suggerimento sul codice. – Adam

Problemi correlati