Avatar billede nayze Nybegynder
11. august 2005 - 09:59 Der er 8 kommentarer og
1 løsning

BinaryReader/Writer problem

Jeg skal indlæse et helt office-dokument (Word, Excel, PP..), finde og ændre et par tegn, og skrive det hele ud i dokumentet igen. Jeg har ikke mulighed for at bruge interop, da det skal køre på en server, hvor der ikke ligger nogen form for Office på.

Lige nu leger jeg med BinaryReader og Binary Writer således:

FileStream fh = File.Open(fileLocation,FileMode.Open);
int length = Convert.ToInt16(fh.Length);

BinaryReader binReader = new BinaryReader(fh);
char[] testchar = new char[length];

try {
    for (int i = 0; i < length; i++)
        testchar[i] = binReader.ReadChar();
}
catch (Exception e) {
    Console.WriteLine(e.Message);
}
fh.Close();

//Udskifter enkelte tegn, indsætter ikke ekstra tegn, udskifter kun eksisterende.

fh = File.Open(fileLocation,FileMode.Open);
BinaryWriter binWriter = new BinaryWriter(fh);
binWriter.Write(testchar);

Men når jeg så vil åbne mit dokument igen er det korrupt.
Avatar billede anadan Nybegynder
11. august 2005 - 10:04 #1
Husk at Flush() og Close() dit dokument igen. Dog tror jeg ikke at du kan ændre i worddokumenter på den måde, medmindre du kender formatet det bliver gemt i (..det er en lukket standard)
Avatar billede nayze Nybegynder
11. august 2005 - 10:12 #2
Der må være en måde, hvorved man kan få lov til at ændre lidt tekst i et office-dokument.

Jeg har et Python-script liggende, hvor der bare laves en f.read() på dokumentet, og lidt senere en f.write(), og det virker fint. Så tænkte jeg, at det måtte være muligt med binary-reader/writer.
Avatar billede anadan Nybegynder
11. august 2005 - 10:15 #3
Så må jeg nok stå af her, så meget kender jeg ikke til word dokumenter :)
Avatar billede arne_v Ekspert
11. august 2005 - 10:30 #4
Ændrer længden af filen sig ?

Jeg finder det meget mistænkeligt at du bruger char[] - jeg ville tro at du skulle
bruge byte[] !
Avatar billede nayze Nybegynder
11. august 2005 - 10:45 #5
Du skal ikke tro, du skal vide, men du har helt ret, så virker det. Jeg takker ydmygt :)

Smid et svar, og du skal få point.


Men hvorledes kan jeg så udskifte tegn? Jeg får en fejl, hvis jeg f.eks. vil lave en  testchar[i] = 'x';
Avatar billede nayze Nybegynder
11. august 2005 - 11:04 #6
Convert.ToByte(); selvfølgeligt. Dumme mig.
Avatar billede arne_v Ekspert
11. august 2005 - 11:11 #7
eller bare

testchar[i] = (byte)'x';

[og måske skulle textchar omdøbes ....]
Avatar billede arne_v Ekspert
11. august 2005 - 11:11 #8
og et svar
Avatar billede nayze Nybegynder
11. august 2005 - 11:17 #9
Hehe ja :)

Hele programmet skal lige igennem en optimering, og pudses af, så den passer med afdelingens code/design-guidelines.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester