web-dev-qa-db-ja.com

C#のExcelセルにプログラムで新しい行を挿入する方法は?

Asposeライブラリを使用してExcelドキュメントを作成しています。セルのどこかで、テキストの2つの部分の間に新しい行を挿入する必要があります。

「\ r\n」を試しましたが、機能しません。セルに2つの正方形のシンボルが表示されるだけです。ただし、Alt + Enterを押して同じセルに新しい行を作成できます。

プログラムで新しい行を挿入するにはどうすればよいですか?

22
User

Aspose Cellsフォーラムから: セル内で改行文字を使用するには?

テキストを指定したら、セルのIsTextWrappedスタイルをtrueに設定する必要があります

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

DBからテキストを取得している場合:

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

Excelが使用する文字コード(IIRCは10(10))を挿入する必要があります。


[〜#〜] edit [〜#〜]:OK、ここにいくつかのコードがあります。以下を含むセルを作成することにより、使用されている文字コードが実際に10であることを確認できたことに注意してください。

A

B

...そしてそれを選択し、VBAイミディエイトウィンドウでこれを実行します。

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

したがって、その値をVBAの別のセルに挿入する必要があるコードは次のようになります。

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

(vbLfは文字コード10であるため)。

C#を使用していることはわかっていますが、VBAで最初に実行した場合、何もコンパイルせずに「インタラクティブ」に試すことができるため、muchの方がわかりやすいと思います。 C#で行うことは、VBAで行うことを複製するだけなので、ほとんど違いはありません。 (C#相互運用機能は、VBAと同じ基本COMライブラリを使用しているだけであることを思い出してください)。

とにかく、このためのC#は次のようになります。

oCell.Value = "A\nB";

違いを見つける:-)


編集2:Aaaargh!投稿を読み直したところ、Asposeライブラリを使用していることがわかりました。申し訳ありませんが、その場合はわかりません。

5
Gary McGill

内部的にExcelはU + 000D U + 000A(CR + LF、\r\n)少なくともXML表現での改行の場合。また、セル内で直接値を見つけることができませんでした。共有文字列を含む別のXMLファイルに移行されました。おそらく、改行を含むセルはファイル形式によって異なる方法で処理され、ライブラリはこれを認識していません。

3
Joey

SpreadsheetGear for .NET は次のようにします:

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

「WrapText = true」に注意してください-これがないと、Excelはテキストをラップしません。 Asposeには同様のAPIがあると思います。

免責事項:私はSpreadsheetGear LLCを所有しています

1
Joe Erickson

Infragisticsソリューションに興味がある人はここにいます。

  1. 使用する

    Environment.NewLine

  2. セルがラップされていることを確認してください

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

1
Cosmin T.

PEAR 'Spreadsheet_Excel_Writer'および 'OLE'の使用:

「_\n_」を機能させる唯一の方法は、セル$format->setTextWrap();を作成してから「_\n_」を使用することでした。

0
Chris

「\ n」は正常に動作します。入力が複数行のテキストボックスから来ている場合、改行文字は「\ r\n」になりますが、これを「\ n」に置き換えると機能します。

0
t pck

Chr(13)を使用できます。次に、Chr(34)ですべてをラップします。 Chr(34)は二重引用符です。

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

私のために働いたもの:

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

私の問題は、\ r\nがエスケープされたことです。

0
SubqueryCrunch