Dostałem dość duży plik Excela, który w każdym wierszu zawiera jeden zrzut klonów z naszej bazy danych Oracle, jeden z nich może wyglądać tak:
{\rtf1\ansi\deff0\deftab708{\fonttbl{\f0\fnil\fcharset0 Courier New;}{\f1\fnil\fcharset0 Arial;}{\f2\fnil\fcharset0 MS Sans Serif;}{\f3\fnil\fcharset0 Times New Roman;}{\f4\fnil\fcharset238 Times New Roman CE;}{\f5\fnil\fcharset204 Times New Roman Cyr;}{\f6\fnil\fcharset161 Times New Roman Greek;}{\f7\fnil\fcharset162 Times New Roman Tur;}{\f8\fnil\fcharset186 Times New Roman Baltic;}}{\colortbl\red0\green0\blue0;\red255\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red128\green0\blue128;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green128\blue0;\red128\green0\blue0;\red128\green128\blue128;\red255\green255\blue255;}\paperw11906\paperh16838\margl1417\margr1417\margt1417\margb1417{\*\pnseclvl1\pnucrm\pnstart1\pnhang\pnindent720{\pntxtb}{\pntxta{.}}}{\*\pnseclvl2\pnucltr\pnstart1\pnhang\pnindent720{\pntxtb}{\pntxta{.}}}{\*\pnseclvl3\pndec\pnstart1\pnhang\pnindent720{\pntxtb}{\pntxta{.}}}{\*\pnseclvl4\pnlcltr\pnstart1\pnhang\pnindent720{\pntxtb}{\pntxta{)}}}{\*\pnseclvl5\pndec\pnstart1\pnhang\pnindent720{\pntxtb{(}}{\pntxta{)}}}{\*\pnseclvl6\pnlcltr\pnstart1\pnhang\pnindent720{\pntxtb{(}}{\pntxta{)}}}{\*\pnseclvl7\pnlcrm\pnstart1\pnhang\pnindent720{\pntxtb{(}}{\pntxta{)}}}{\*\pnseclvl8\pnlcltr\pnstart1\pnhang\pnindent720{\pntxtb{(}}{\pntxta{)}}}{\*\pnseclvl9\pnlcrm\pnstart1\pnhang\pnindent720{\pntxtb{(}}{\pntxta{)}}}{\pard\ql\li0\fi0\ri0\sb0\sl\sa0 \plain\f3\fs24\cf0 FOO FOO FOO \'85\'85. \'85\'85..}}
Teraz, umieszczając te dane w .Rtf
System.Windows.Forms.RichTextBox
, a następnie odczytując jego wartość .Text
, otrzymuję prostą konwersję. ALE, jakoś przynosi to nowe linie.
Próbowałem je usunąć przez
rtf.Replace("\n", "").Replace("\r", "").Replace(Environment.NewLine, "")
Ale wydaje się, że to nie pomaga.
Czy ktoś wie, jak mogę przekonwertować format tekstu sformatowanego na pojedynczy wiersz zwykły tekst?
2 odpowiedzi
Spójrz na ten przykład, kod wyodrębniony w celu zachowania.
ZAKTUALIZOWANE — błąd kopiowania i wklejania z programu VB.NET — przepraszam.
class ConvertFromRTF
{
static void Main()
{
string path = @"test.rtf";
//Create the RichTextBox. (Requires a reference to System.Windows.Forms.dll.)
using(System.Windows.Forms.RichTextBox rtBox = new System.Windows.Forms.RichTextBox());
{
// Get the contents of the RTF file. Note that when it is
// stored in the string, it is encoded as UTF-16.
string s = System.IO.File.ReadAllText(path);
// Convert the RTF to plain text.
rtBox.Rtf = s;
string plainText = rtBox.Text;
// Now just remove the new line constants
plainText = plainText.Replace("\r\n", ",");
// Output plain text to file, encoded as UTF-8.
System.IO.File.WriteAllText(@"output.txt", plainText);
}
}
}
Jak: konwertować pliki RTF na zwykły tekst (przewodnik programowania C#)
W .NET Framework można użyć kontrolki RichTextBox do utworzenia edytora tekstu obsługującego format RTF i umożliwiającego użytkownikowi stosowanie formatowania do tekstu w sposób WYSIWIG.
Możesz również użyć kontrolki RichTextBox, aby programowo usunąć kody formatowania RTF z dokumentu i przekonwertować go na zwykły tekst. Nie trzeba osadzić kontrolki w formularzu systemu Windows, aby wykonać tego rodzaju operację.
Podobne pytania
Nowe pytania
c#
C # (wymawiane „patrz ostro”) jest językiem programowania wysokiego poziomu, statycznie typowanym, wieloparadygmatowym opracowanym przez firmę Microsoft. Kod C # zwykle jest przeznaczony dla rodziny narzędzi Microsoft .NET i czasów wykonywania, do których należą między innymi .NET Framework, .NET Core i Xamarin. Użyj tego tagu w przypadku pytań dotyczących kodu napisanego w C # lub C # formalnej specyfikacji.