Asposeライブラリを使用してExcelドキュメントを作成しています。セルのどこかで、テキストの2つの部分の間に新しい行を挿入する必要があります。
「\ r\n」を試しましたが、機能しません。セルに2つの正方形のシンボルが表示されるだけです。ただし、Alt + Enterを押して同じセルに新しい行を作成できます。
プログラムで新しい行を挿入するにはどうすればよいですか?
Aspose Cellsフォーラムから: セル内で改行文字を使用するには?
テキストを指定したら、セルのIsTextWrappedスタイルをtrueに設定する必要があります
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(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ライブラリを使用していることがわかりました。申し訳ありませんが、その場合はわかりません。
内部的にExcelはU + 000D U + 000A(CR + LF、\r\n
)少なくともXML表現での改行の場合。また、セル内で直接値を見つけることができませんでした。共有文字列を含む別のXMLファイルに移行されました。おそらく、改行を含むセルはファイル形式によって異なる方法で処理され、ライブラリはこれを認識していません。
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を所有しています
Infragisticsソリューションに興味がある人はここにいます。
使用する
Environment.NewLine
セルがラップされていることを確認してください
dataSheet.Rows[i].Cells[j].CellFormat.WrapText = ExcelDefaultableBoolean.True;
PEAR 'Spreadsheet_Excel_Writer'および 'OLE'の使用:
「_\n
_」を機能させる唯一の方法は、セル$format->setTextWrap();
を作成してから「_\n
_」を使用することでした。
「\ n」は正常に動作します。入力が複数行のテキストボックスから来ている場合、改行文字は「\ r\n」になりますが、これを「\ n」に置き換えると機能します。
Chr(13)を使用できます。次に、Chr(34)ですべてをラップします。 Chr(34)は二重引用符です。
私のために働いたもの:
worksheet.Cells[0, 0].Style.WrapText = true;
worksheet.Cells[0, 0].Value = yourStringValue.Replace("\\r\\n", "\r\n");
私の問題は、\ r\nがエスケープされたことです。