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

StackOverflow https://stackoverflow.com/questions/1176548

  •  19-09-2019
  •  | 
  •  

質問

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

「 」を試してみましたが、機能せず、セル内に 2 つの正方形の記号が表示されるだけです。ただし、Alt+Enter を押して同じセルに新しい行を作成することはできます。

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

役に立ちましたか?

解決

のAspose細胞のフォーラムから:<のhref = "http://www.aspose.com/community/forums/thread/163248/how-to-use-new-line-char-with-in-a- cell.aspx」のrel = "noreferrer">セル内で改行文字を使用するには?の

あなたがtrueにセルのIsTextWrappedスタイルを設定するテキストを供給した後、

worksheet.Cells[0, 0].Style.WrapText = true;

他のヒント

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

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


編集:OK、これがコードです。以下を含むセルを作成することで、使用されている文字コードが実際に 10 であることを確認できたことに注意してください。

B

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

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

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

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

(vbLfは文字コード10なので)。

C# を使用していることは知っていますが、 多くの 最初に VBA で実行すると、何もコンパイルせずに「対話的に」試すことができるため、何をすべきか理解しやすくなります。C# で行うことは何であれ、VBA で行うことを複製するだけなので、違いはほとんどありません。(C# 相互運用機能は、VBA と同じ基礎となる COM ライブラリを使用しているだけであることに注意してください)。

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

oCell.Value = "A\nB";

違いを見つけてください:-)


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

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

スプレッドシートギア.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 =を」注 - Excelは、このことなく、テキストは折り返されません。私は、Aspose社が同様のAPIを持っていることを前提としています。

免責事項:私は自分のスプレッドシートギア社

Infragistics ソリューションに興味がある方は、こちらをご覧ください。

  1. 使用

    Environment.NewLine

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

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

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

PEAR 'Spreadsheet_Excel_Writer' と 'OLE' を使用します:

私は仕事への「\n」とは、細胞$format->setTextWrap();を作っていたし、「\n」を使用するとうまくいく得ることができます。

唯一の方法

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)

私の仕事は何ます:

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

私の問題が\ r \ nをエスケープ来たということでした。

実際に、それは本当に簡単です。

あなたは、ExcelのXMLバージョンを編集することができます。それを保存し、それをあなたのテキストの間に新しい行を与えるために、セルを編集します。その後、あなたはエディタでファイルを開くことができ、その後、新しい行が表され表示されます &#10;

試してみる....

あなたは "\ n" は私が推測する、それが動作するはずしようとしている。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top