Zum Inhalt springen

VB.NET:Einfügen von RTF Text in Excel aus der Zwischenablage


Gateway_man

Empfohlene Beiträge

Hi,

folgendes Problem:

Ich habe Texte die mit RTF Formatiert sind. Da ich die Formatierung in Excel gerne beibehalten würde habe ich ein paar testreihen gestartet.

Erster Simpler Test:

Mit Word ein RTF Dokument erstellt. Dann den formatierten Text mit STRG + C

in die Zwischenablage kopiert. Dananch ein Excel Sheet geöffnet, eine Zelle selektiert und dann eingefügt. Das Ergebnis:

Die Formatierung blieb erhalten.

Dann hatte ich versucht das im Programm umzusetzten:

Sprich den Inhalt des RTF Dokuments in die Zwischenablage kopiert und dann das Excel Sheet geöffnet und versucht per Worksheet.Paste den Inhalt einzufügen:

RTF Text:


rtf.Rtf = "{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1031\deflangfe1031{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f44\fswiss\fcharset0\fprq2{\*\panose 020b0806030902050204}Impact;}" _

& "{\f124\froman\fcharset238\fprq2 Times New Roman CE;}{\f125\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f127\froman\fcharset161\fprq2 Times New Roman Greek;}{\f128\froman\fcharset162\fprq2 Times New Roman Tur;}" & _

"{\f129\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f130\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f131\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f132\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}" & _

"{\f564\fswiss\fcharset238\fprq2 Impact CE;}{\f565\fswiss\fcharset204\fprq2 Impact Cyr;}{\f567\fswiss\fcharset161\fprq2 Impact Greek;}{\f568\fswiss\fcharset162\fprq2 Impact Tur;}{\f571\fswiss\fcharset186\fprq2 Impact Baltic;}}{\colortbl;\red0\green0\blue0;" & _

"\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;" & _

"\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1031\langfe1031\cgrid\langnp1031\langfenp1031 \snext0 Normal;}" & _

"{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\*" & _

"\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv" & _

"\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\rsidtbl \rsid657347\rsid864002}" & _

"{\*\generator Microsoft Word 11.0.5604;}{\info{\author 1K146}{\operator 1K146}{\creatim\yr2010\mo7\dy27\hr9\min16}{\revtim\yr2010\mo7\dy27\hr9\min17}{\version2}{\edmins0}{\nofpages1}{\nofwords2}{\nofchars15}{\nofcharsws16}{\vern24689}}" & _

"\paperw11906\paperh16838\margl1417\margr1417\margt1417\margb1134 \deftab708\widowctrl\ftnbj\aenddoc\hyphhotz425\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1417\dgvorigin1417\dghshow1" & _

"\dgvshow1\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct" & _

"\asianbrkrule\rsidroot864002\newtblstyruls\nogrowautofit \fet0\sectd \linex0\headery708\footery708\colsx708\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2" & _

"\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6" & _

"\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang" & _

"{\pntxtb (}{\pntxta )}}\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1031\langfe1031\cgrid\langnp1031\langfenp1031 {\i\insrsid657347\charrsid657347 Das}{\insrsid657347  }{\ul\insrsid657347\charrsid657347 " & _

"ist}{\insrsid657347  }{\f44\insrsid657347\charrsid657347 ein}{\insrsid657347  }{\b\insrsid657347\charrsid657347 test der wirklich cool ist!}{\insrsid864002 " & _

"\par }}"

        Clipboard.SetText(rtf.Rtf, TextDataFormat.Rtf)

        Dim app As New Application

        Dim wb As Workbook = app.Workbooks.Open("C:\test123.xls")

        Dim ws As Worksheet = wb.Worksheets(1)

        ws.Paste(ws.Cells(3, 3))

  wb.Save()

        wb.Close()

        app.Quit()

        System.Runtime.InteropServices.Marshal.ReleaseComObject(app)

Dummerweise wirft der Compiler bei ws.Paste folgenden Fehler:
Ausnahme von HRESULT: 0x800A03EC
Genauer:
System.Runtime.InteropServices.COMException wurde nicht behandelt. ErrorCode=-2146827284 Message="Ausnahme von HRESULT: 0x800A03EC" Source="Microsoft.Office.Interop.Excel" StackTrace: bei Microsoft.Office.Interop.Excel._Worksheet.Paste(Object Destination, Object Link) bei add.Form1.Button1_Click(Object sender, EventArgs e) in C:\Dokumente und Einstellungen\1K146\Desktop\fill\add\Form1.vb:Zeile 30. bei System.Windows.Forms.Control.OnClick(EventArgs e) bei System.Windows.Forms.Button.OnClick(EventArgs e) bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) bei System.Windows.Forms.Control.WndProc(Message& m) bei System.Windows.Forms.ButtonBase.WndProc(Message& m) bei System.Windows.Forms.Button.WndProc(Message& m) bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData) bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) bei System.Windows.Forms.Application.Run(ApplicationContext context) bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun() bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel() bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine) bei add.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:Zeile 81. bei System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() bei System.Threading.ThreadHelper.ThreadStart_Context(Object state) bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) bei System.Threading.ThreadHelper.ThreadStart() InnerException:
Zunächst habe ich dann noch einen anderen Versuch gestartet. Ich hab das RTF Dokument wieder mit Word geöffnet, dann den formatierten Text Selektiert und wieder mit STRG + C in die Zwischenablage kopiert. Dann hatte ich nurnoch den Paste Befehl ausgeführt:

  Dim app As New Application

        Dim wb As Workbook = app.Workbooks.Open("C:\test123.xls")

        Dim ws As Worksheet = wb.Worksheets(1)

        ws.Paste(ws.Cells(3, 3))

        wb.Save()

        wb.Close()

        app.Quit()

        System.Runtime.InteropServices.Marshal.ReleaseComObject(app)

Das funktionierte auch. Der Text samt Formatierung wurde in Excel übernommen.

Da es aber nicht praktikabel ist den Text aus der Datenbank zu holen, diesen nach Word zu exportieren und dann Manuell zu selektieren und zu kopieren frage ich euch nun was ich eventuell falsch gemacht haben könnte?

Und ob einer von euch eine Idee hat, wie ich einen mit rft Formatierten Text nach Excel exportieren kann.

lg

Gateway

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...