web-dev-qa-db-fra.com

Comment insérer par programme une nouvelle ligne dans une cellule Excel en C #?

J'utilise la bibliothèque Aspose pour créer un document Excel. Quelque part dans une cellule, je dois insérer une nouvelle ligne entre deux parties du texte.

J'ai essayé "\ r\n" mais cela ne fonctionne pas, affiche seulement deux symboles carrés dans la cellule. Je peux cependant appuyer sur Alt + Entrée pour créer une nouvelle ligne dans cette même cellule.

Comment insérer une nouvelle ligne par programme?

21
User

Depuis les forums Aspose Cells: Comment utiliser un nouveau caractère avec des caractères dans une cellule?

Après avoir fourni du texte, vous devez définir le style IsTextWrapped de la cellule sur true.

worksheet.Cells[0, 0].Style.WrapText = true;
24
Ahmad Mageed
cell.Text = "your firstline<br style=\"mso-data-placement:same-cell;\">your secondline";

Si vous recevez le texte de DB, alors:

cell.Text = textfromDB.Replace("\n", "<br style=\"mso-data-placement:same-cell;\">");
8
Kiran

Vous devez insérer le code de caractère utilisé par Excel, qui correspond à IIRC 10 (dix).


EDIT: OK, voici du code. Notez que j'ai pu confirmer que le code de caractère utilisé est bien 10, en créant une cellule contenant:

UNE

B

... puis en le sélectionnant et en l'exécutant dans la fenêtre immédiate de VBA:

?Asc(Mid(Activecell.Value,2,1))

Ainsi, le code nécessaire pour insérer cette valeur dans une autre cellule de VBA serait:

ActiveCell.Value = "A" & vbLf & "B"

(puisque vbLf est le code de caractère 10).

Je sais que vous utilisez C # mais je trouve qu'il est beaucoup plus facile de comprendre ce qu'il faut faire si vous le faites d'abord dans VBA, car vous pouvez l'essayer. "interactivement" sans rien compiler. Quoi que vous fassiez en C # ne fait que reproduire ce que vous faites dans VBA, il n'y a donc pratiquement aucune différence. (Rappelez-vous que l’interopérabilité C # utilise uniquement les mêmes bibliothèques COM sous-jacentes que VBA).

Quoi qu'il en soit, le C # pour cela serait:

oCell.Value = "A\nB";

Trouve la différence :-)


EDIT 2: Aaaargh! Je viens de relire le message et j'ai vu que vous utilisiez la bibliothèque Aspose. Désolé, dans ce cas je n'en ai aucune idée.

5
Gary McGill

En interne, Excel utilise U + 000D U + 000A (CR + LF, \r\n) pour un saut de ligne, au moins dans sa représentation XML. Je ne pouvais pas non plus trouver la valeur directement dans une cellule. Il a été migré vers un autre fichier XML contenant des chaînes partagées. Peut-être que les cellules contenant des sauts de ligne sont gérées différemment par le format de fichier et que votre bibliothèque n’en sait rien.

3
Joey

SpreadsheetGear for .NET le fait de cette façon:

        IWorkbook workbook = Factory.GetWorkbook();
        IRange a1 = workbook.Worksheets[0].Cells["A1"];
        a1.Value = "Hello\r\nWorld!";
        a1.WrapText = true;
        workbook.SaveAs(@"c:\HelloWorld.xlsx", FileFormat.OpenXMLWorkbook);

Notez le "WrapText = true" - Excel ne sera pas envelopper le texte sans cela. Je suppose que Aspose a des API similaires.

Disclaimer: Je possède SpreadsheetGear LLC

1
Joe Erickson

Si quelqu'un est intéressé par la solution Infragistics, la voici.

  1. Utilisation

    Environment.NewLine 

  2. Assurez-vous que votre cellule est bien emballée 

    dataSheet.Rows[i].Cells[j].CellFormat.WrapText = ExcelDefaultableBoolean.True;

1
Cosmin T.

Utilisation de PEAR 'Spreadsheet_Excel_Writer' et 'OLE':

La seule façon pour moi de faire fonctionner "\n" était de créer la cellule $format->setTextWrap(); puis d'utiliser "\n".

0
Chris

"\ n" fonctionne bien. Si l'entrée provient d'une zone de texte multiligne, les caractères de la nouvelle ligne seront "\ r\n". Si ceci est remplacé par "\ n", cela fonctionnera. 

0
t pck

Vous pouvez utiliser Chr (13). Ensuite, emballez le tout dans Chr (34). Chr (34) est des guillemets doubles.

  • Exemple VB.Net:
  • TheContactInfo = "" 
  • TheContactInfo = Couper (TheEmail) & chr (13)
  • TheContactInfo = TheContactInfo & Trim (ThePhone) & chr (13)
  • TheContactInfo = Chr (34) & TheContactInfo & Chr (34)
0
Brian Daul

Ce qui a fonctionné pour moi:

worksheet.Cells[0, 0].Style.WrapText = true;
worksheet.Cells[0, 0].Value = yourStringValue.Replace("\\r\\n", "\r\n");

Mon problème était que le\r\n est venu échappé.

0
SubqueryCrunch