2013-10-11 9 views
12

Il mio codice genererà il documento di Excel come questoCome formattare voce in Excel/CSV utilizzando C#

|id | Name | Address | company_Name | Destination| 
|----|-------|----------|--------------|------------| 
|##1 | xxx | xxxx  | xxx   | xxxxx  | 

Ma voglio così ...

----------------------------------------------------- 
| Personal Information | Working INFO   | 
----------------------------------------------------- 
|id | Name | Address | company_Name | Destination| 
|----|-------|----------|--------------|------------| 
|##1 | xxx | xxxx  | xxx   | xxxxx  | 
----------------------------------------------------- 

ottengo i dati l'API e io salvarlo utilizzando il SaveFileDialog

SaveFileDialog dialog = new SaveFileDialog(); 
dialog.Title = "Save file as..."; 
dialog.Filter = "Text files (*.csv)|*.csv"; 
dialog.RestoreDirectory = true; 

if (dialog.ShowDialog() == DialogResult.OK) 
{ 
    System.IO.StreamWriter writer = new System.IO.StreamWriter(dialog.FileName); //open the file for writing. 
    writer.Write(report); //write the current date to the file. change this with your date or something. 
    writer.Close(); //remember to close the file again. 
    writer.Dispose(); //remember to dispose it from the memory. 

    program.ShowInformationMessage("File Save successfully"); 
} 

non v'è alcun problema con esso.

Voglio rendere la voce come in linea qualcosa del genere.

+4

sai perché hai ricevuto downvote da qualcuno? Per questo motivo: 'Le domande relative ai problemi con il codice che hai scritto devono descrivere il problema specifico - e includere un codice valido per riprodurlo - nella domanda stessa. Quindi, mostra ciò che hai ora. –

+0

Stai usando Interop? In caso affermativo, consultare [QUESTO] (http://www.siddharthrout.com/vb-dot-net-and-excel/). Controllare la sezione 'Celle di unione/scomparsa '. Il codice è in vb.net ma può essere facilmente portato a C# –

+0

Ignora il mio commento sopra. Ho appena visto la tua modifica. –

risposta

2
... 
System.IO.StreamWriter writer = new System.IO.StreamWriter(dialog.FileName); //open the file for writing. 
writer.Write("Personal Information" + delimiter + delimiter + "Working INFO" + delimiter); 
writer.Write(report); //write the current date to the file. change this with your date or something. 
... 

formato CSV non supporta celle unite, ma ancora si può organizzare riga di intestazione, come descritto sopra. Basta sostituire il delimitatore con qualunque sia il delimitatore di cella.

-3
  1. In primo luogo crea il tuo modello di file Excel in Excel e formattalo come desideri.
  2. Inserire solo una riga in cui verranno stampate molte righe.
  3. Inserire le etichette nella riga di dati per sostituire con dati reali.
  4. Salvalo come file MHT. (gli stili verranno salvati, anche come html)
  5. Apre il file mht con l'editor di testo.
  6. Mettere <! #> Agli inizi e alla fine della riga di dati in modo da poter dividere il contenuto del file dal programma e popolare linee di dati reali in modo dinamico, sostituendo le etichette con le proprietà reali.

    <!#> 
    <tr height=3D20 style=3D'height:15.0pt'> 
    <td height=3D20 class=3Dxl67 style=3D'height:15.0pt;border-top:none'>[id]=</td> 
    <td class=3Dxl67 style=3D'border-top:none;border-left:none'>[name]</td> 
    <td class=3Dxl67 style=3D'border-top:none;border-left:none'>[company<span  style=3D'display:none'>]</span></td> 
    <td class=3Dxl67 style=3D'border-top:none;border-left:none'>[destination]=</td> 
    </tr> 
    <!#> 
    
  7. salvare il file da editor di testo.

  8. Dal programma, potrete leggere il contenuto del file MHT, si dividerà con il <! #> E moltiplicare la parte riga di dati, aggiungere tutti insieme e salvare in un'altra file..thats esso ..

-5

È necessario aver installato Microsoft Visual Studio Tools per Office.

Successivamente creare un progetto .NET comune e aggiungere il riferimento all'oggetto COM Microsoft.Office.Interop.Excel.dll tramite la finestra di dialogo "Aggiungi riferimento ...".

Application excel = new Application(); 
Workbook wb = excel.Workbooks.Open(path); 

//Get All available worksheets 
//Excel.Sheets excelSheets = wb.Worksheets; 

//Get Specific WorkSheet 
string currentSheet = "Sheet1"; 
Excel.Worksheet newSheet = (Excel.Worksheet)wb.get_Item(currentSheet); 
newSheet.Cells[i, j].HorizontalAlignment = ExcelAlignment.xlLeft; //or Excel.XlHAlign.xlHAlignLeft 
+0

Come risponde alla domanda? – Fedor

+0

Questo ti dice che ci sono molte funzionalità integrate in Microsoft Visual Studio Tools per Office, quindi puoi usare la proprietà Unisci per eseguire la formattazione richiesta. – KhanZeeshan

2

Avete considerato l'utilizzo di closedxml (https://closedxml.codeplex.com/).

var wb = new XLWorkbook(report); //open spreadsheet 
IXLWorksheet ws = wb.Worksheets.First(); //get first sheet 
ws.Row(1).InsertRowsAbove(1); //insert row 
ws.Cell("A1").Value = "Personal Information"; 
ws.Cell("A4").Value = " Working INFO"; 
ws.Range("A1:A3").Row(1).Merge(); // merge first title 
ws.Range("A4:A6").Row(1).Merge(); // merge second 
wb.SaveAs(writer); 

È anche possibile aprire csv e di salvare come csv

Problemi correlati