webForumDet fria alternativet

.doc i .net

.NET

7 svar · 286 visningar · startad av neversleep

Medlem sedan okt. 2001230 inlägg
Frågan#1

Tjena

Finns det något smidigt sätt att läsa in ett word dokument i c#? testade att läsa in det som ren text men då fick jag med en massa skräpdata från word-dokumentet.

tacksam för alla tips

Medlem sedan juni 20022 599 inlägg
#2

Tror det finns nåt specifikt för .NET, men du kan ju använda wrappningar av de gamla COM-objecten från Office-paketet:

Add reference->COM->Microsoft Word X Object Library

Här finns lite exempelkod:

http://www.c-sharpcorner.com/Code/2002/Mar/WordFromDotNet.asp

(Inte exakt vad du vill göra men du hittar säkert mer kod om du söker vidare på nyckelorden.)

Medlem sedan maj 2001329 inlägg
#3

Med office 11 släpps..

http://msdn.microsoft.com/vstudio/techinfo/officetools/

Medlem sedan okt. 2001230 inlägg
#4

vilse i bland msdn

ok har lagt till referens till Word 9.0 word library och öppnat ett dokument...tror jag. Har ingen aning om hur jag ska hanskas med objektet. Det är en sanslös djungel med interface och metoder och hittar inte ett jota på msdn.

Vet inte om det går att direkt hämta innehållet från worddokumentet, däremot stödjer richtextbox rtf formatet, så min tanke är följande.

öppna dokumentet.
spara om det i rtf format.
läs in rtf dokumentet.

fast jag hittar inte ens hur man sparar ett öppnat dokument. Ngn som hittar bland msdn dokumentationen som kan ge mig en knuff i rätt riktning?
får med hjälp av intellisense fram metoden SaveAs, men den vill ha et gäng med parametrar, precis som open metoden nedan...

_____________________

Koden för att öppna dokumentet:

object fileName = "e:\\test.doc";
object readOnly = true;
object missing = System.Reflection.Missing.Value;

		Word.ApplicationClass WordApp = new Word.ApplicationClass();
		Word.Document WordDoc = WordApp.Documents.Open( ref fileName, ref missing, ref readOnly, ref
			missing, ref missing, ref missing, ref missing, ref missing, ref
			missing, ref missing, ref missing, ref missing );
Medlem sedan juni 20022 599 inlägg
#5

neversleep skrev:

som kan ge mig en knuff i rätt riktning?

Kanske.. Jag har lite gammal VB6-kod som du kan få billigt:

    Dim myApp As New Word.Application
    Dim myDoc As Word.Document
    Set myDoc = myApp.Documents.Open("<sökväg>\document.doc")
    myDoc.ActiveWindow.Selection.WholeStory
    myDoc.ActiveWindow.Selection.Copy
    myApp.Quit
    'Hela dokumentet ligger nu i clip-boardet
    'det kan du testa genom att pasta in i Wordpad.
Medlem sedan okt. 2001230 inlägg
#6

Funkar exakt som jag vill.
Kopiera till clipboard...hade jag aldrig kommit på själv!

Du är kung niko..name your price ;)

Medlem sedan juni 20022 599 inlägg
#7

neversleep skrev:

name your price

Vi kan byta. Klistra i C#-motsvarigheten, så är vi kvitt. :)

Medlem sedan okt. 2001230 inlägg
#8

hehe visst..bara till dig dårå ;)

WordDoc.ActiveWindow.Selection.WholeStory();
WordDoc.ActiveWindow.Selection.Copy();

// deklarera ett IDataObject till clipboard datan
// Hämta datan
IDataObject iData = Clipboard.GetDataObject();

//Stäng dokumentet om du är färdig med det
WordApp.Quit(ref missing, ref missing, ref missing);

// Kontrollera om formatet är i RTF
if(iData.GetDataPresent(DataFormats.Rtf))
{
// Jajamensan det var det, klistra in
richtextbox.Rtf = (string)iData.GetData(DataFormats.Rtf);
}
else
{
// Nope det var det ej
richtextbox.Text = "Could not get data from document";
}

263 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)