Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi MS One Note dateien lesen (https://www.delphipraxis.net/174223-ms-one-note-dateien-lesen.html)

DelTurbo 10. Apr 2013 11:35

MS One Note dateien lesen
 
Hi,
gibt es eine Komponente womit man .one dateien lesen kann? Ich bräuchte nur den reinen text aus der datei.

Danke im voraus

Union 10. Apr 2013 11:49

AW: MS One Note dateien lesen
 
Das sollte über MSXML gehen, da ONE Dateien XML-Dateien sind.

DelTurbo 10. Apr 2013 11:56

AW: MS One Note dateien lesen
 
Ich habe grad mal reingesehen. Also xml kenn ich so nicht. Sieht für mich nach was anderem aus.

Ich nutze Office 2003. Vielleicht wurde das ja mal geändert?!?

Der schöne Günther 10. Apr 2013 12:08

AW: MS One Note dateien lesen
 
Ich meine, das Office-Format wurde mit der 2007er-Fassung auf ein neues, XML-basiertes Format umgestellt. Davor: Keine Ahnung.

Bummi 10. Apr 2013 12:16

AW: MS One Note dateien lesen
 
Ich habe hier einen Fetzen von einem Experiment herumliegen, vielleicht kannst Du damit was anfangen,

Delphi-Quellcode:
unit Unit5;
// TEST 20100802 Thomas Wassermann
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, xmldom, XMLIntf, msxmldom, XMLDoc, ComCtrls,OneNote12_TLB,clipbrd;

type
  TGuidClass=Class(TComponent)
    public
    Guid:WideString;
    IsPage:Boolean;
  End;

  TForm5 = class(TForm)
    Button1: TButton;
    XMLDocument1: TXMLDocument;
    TreeView1: TTreeView;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure TreeView1DblClick(Sender: TObject);
  private
     o:TOneNote2007;
    procedure XML2Tree(tree: TTreeView; XMLDoc: TXMLDocument);
    procedure InsertChildren(tree:TTreeview;n: TTreenode; const Guid: WideString);
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form5: TForm5;

implementation

{$R *.dfm}


Function SaveStr(v:Variant):String;
begin
  if not VarIsNull(v) then Result := v else Result := '';

end;

procedure TForm5.InsertChildren(tree:TTreeview;n:TTreenode;const Guid:WideString);
var
 Resp:WideString;
 XD:TXMLDocument;
 iNode: IXMLNode;
 g : TGuidClass;
 TreeNode:TTreenode;
begin
        XD:=TXMLDocument.Create(self);
        try
          o.GetHierarchy(Guid ,hsPages,Resp);
          XD.XML.Text := resp;
          XD.Active:=true;
             if XD.DocumentElement.ChildNodes.Count > 0 then
                begin
                  iNode := XD.DocumentElement.ChildNodes[0];
                  while iNode <> nil do
                  begin
                    g := TGuidClass.Create(n.TreeView);
                    g.Guid := iNode.Attributes['ID'];
                    g.IsPage := iNode.NodeName='one:Page';
                    TreeNode := tree.Items.AddchildObject(n, SaveStr(iNode.Attributes['name']) + ' - ' + SaveStr(iNode.Attributes['path']),g);
                    InsertChildren(tree,TreeNode,g.Guid);

                    iNode := iNode.NextSibling;
                  end;
                end;
        finally
          XD.Free
        end;
end;

procedure TForm5.XML2Tree(tree: TTreeView; XMLDoc: TXMLDocument);
var
  iNode: IXMLNode;

  procedure ProcessNode(Node: IXMLNode; TreeNode: TTreeNode);
  var
    cNode: IXMLNode;
    g:TGuidClass;
    Resp:WideString;
  begin
    if Node = nil then Exit; // Aufhören, wenn ein Blatt erreicht ist

    // Einen Knoten zum Baum hinzufügen

        g := TGuidClass.Create(tree);
        g.Guid := Node.Attributes['ID'];
        g.IsPage := false;
        TreeNode := tree.Items.AddchildObject(TreeNode, SaveStr(Node.Attributes['name']) + ' - ' + SaveStr(Node.Attributes['path']),g);
        InsertChildren(tree,TreeNode,g.Guid);



    // Zum Kindknoten weiter gehen
    cNode := Node.ChildNodes.First;

    // Alle Kindknoten bearbeiten
    {
    while cNode <> nil do
    begin
      ProcessNode(cNode, TreeNode);
      cNode := cNode.NextSibling;
    end;
    }
  end;

begin
  iNode := XMLDoc.DocumentElement.ChildNodes[0];
  while iNode <> nil do
  begin
    ProcessNode(iNode, nil); // Rekursiv
    iNode := iNode.NextSibling;
  end;
end;

procedure TForm5.Button1Click(Sender: TObject);
var

 Resp:WideString;

  n: Integer;
  ID, Tag: IDOMNode;
  Tags: IDOMNodeList;
begin

   o:=TOneNote2007.Create(Self);
   o.Connect;
   o.GetHierarchy('' ,hsNotebooks,Resp);
   XMLDocument1.XML.Text := resp;
   XMLDocument1.Active:=true;

   XML2Tree(Treeview1,XMLDocument1);
  // Showmessage(Resp);
end;

procedure TForm5.FormCreate(Sender: TObject);
begin
  ReportMemoryLeaksOnShutDown := true;
end;

procedure TForm5.TreeView1DblClick(Sender: TObject);
var
 g:String;
 Resp:WideString;
 sl:TStringList;
begin
  g := TGuidClass( Treeview1.Selected.Data).Guid;
  if TGuidClass( Treeview1.Selected.Data).isPage then
      begin
//        o.GetHierarchy(g ,hsPages,Resp);
        o.GetPageContent(g,Resp,piAll);
        Showmessage(Resp);
        sl := TStringList.Create;
        sl.Text := Resp;
        sl.SaveToFile('C:\temp\Seite.xml');
        sl.Free;
      end;
end;

end.

jfheins 10. Apr 2013 12:22

AW: MS One Note dateien lesen
 
Naja, es ist weder direkt XML noch direkt zip. Keine Ahnung was die da genau gemacht haben: Schau mal hier hinein: http://msdn.microsoft.com/en-us/libr...ffice.12).aspx

DelTurbo 10. Apr 2013 12:45

AW: MS One Note dateien lesen
 
Ups,
ich dachte es gibt sowas für One Note wie es das für Word gibt.

http://www.scalabium.com/msword/

Bummi 10. Apr 2013 14:05

AW: MS One Note dateien lesen
 
Ja, OneNote12_TLB ist eine importierte Typbiliothek für "OneNote.Application" ...

DelTurbo 13. Apr 2013 14:31

AW: MS One Note dateien lesen
 
Ups, vergessen zu antworten. Ich nutze die PDFtext.dll für PDF-Files. Klappt einwandfrei. Die .one-sachen lasse ich erstmal.

Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz