SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




TXT-Datei im Sharepoint auslesen

Unbeantwortet Dieser Beitrag hat 6 Antworten

Ohne Rang
53 Beiträge
Jan D erstellt 2 Sept. 2010 16:26
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

In meinem Sharepoint würde ich gerne Daten verarbeiten, welche ich als Plain-Text, z.B. also als *.txt-Datei hochlade.

Folgenden Code habe ich bereits als Webpart ausprobiert:

 

string txt_datei_zeile;
  FileStream txt_input = new FileStream("http://SHAREPOINT/TEST_BIB/TEST.txt", FileMode.Open, FileAccess.Read);
StreamReader txt_auslesen = new StreamReader(txt_input);

while ((txt_datei_zeile = txt_auslesen.ReadLine()) != null)
{
LiteralControl myMessage = new LiteralControl(txt_datei_zeile);
this.Controls.Add(myMessage);
}
txt_auslesen.Close();
txt_input.Close();

 

Leider sagt Sharepoint mir dann, dass ich keine "URIs" öffnen dürfe. Hat jmd. eine Idee, wie ich diesen Plain-Text auslesen kann, um ihn dann später zeilenweise zu bearbeiten?

 

Beste Grüße

Jan

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 2 Sept. 2010 16:34
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Wenn Du ein Webpart in SharePoint hast und die Dateien in SharePoint liegen, dann kannst Du ganz einfach über das SharePoint-Objektmodell auf die Dateien zugreifen.

SPWeb web = SPContext.Current.Web;
SPFile file = web.GetFile("relativer Pfad zur Datei");
// jetzt kannst Du mit den verschiedenen fiel.Open* Methoden auf den Inhalt zugreifen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
53 Beiträge
Jan D Als Antwort am 2 Sept. 2010 17:20
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

 

Hallo Andi,

vielen Dank für Deine schnelle Antwort. Vielleicht reden wir gerade etwas an einander vorbei, aber mein Quellcode sieht nun wie folgt aus:

string txt_datei_zeile;
SPWeb web = SPContext.Current.Web;
SPFile SOCs = web.GetFile("http://dcisms/kw35/SOC_BIB/SOC.txt");

FileStream txt_input = new FileStream("SOCs", FileMode.Open, FileAccess.Read);
StreamReader txt_auslesen = new StreamReader(txt_input);

 

Allerdings erhalte ich weiterhin die gleiche Fehlermeldung wie zuvor :(

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 2 Sept. 2010 17:24
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Wie ich oben schrieb: lasse den FileStream weg und benutze die Open* Methoden von SPFile (SOCs.Open).

Prüfe auch auf SPFile.Exists, um sicherzugehen, daß Du auch wirklich die richtige Datei hast.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
53 Beiträge
Jan D Als Antwort am 6 Sept. 2010 09:56
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Andi,

zunächst einmal Danke für Deine schnelle und hochwertige Antwort. Die Datei kann ich nun öffnen und benutzen. Der Code sieht ungefähr so aus:

 


SPSite oSiteCollection = SPContext.Current.Site;

  SPWeb oWebsiteSrc = oSiteCollection.AllWebs["sub_website"];
  SPWebCollection collWebsites = oSiteCollection.AllWebs["sub_website"].Webs;
SPFile oFile = oWebsiteSrc.GetFile("SOC_BIB/SOC.txt");
string strFilename = oFile.Name;
byte[] binFile = oFile.OpenBinary();



using (Stream strm = oFile.OpenBinaryStream())
{
using (StreamReader zeile = new StreamReader(strm))
{

if (oFile.Exists)
{




while (zeile.Peek() >= 0)
{
   this.verarbeiten(zeile.ReadLine());


}
}
else
{

...
}
}
}
}

 

 

2 Probleme habe ich allerdings noch:

 

1)  Die Zeilen, die ich einlese, sind relativ lang. Sharepoint schneidet diese nach der Hälfte ab. Hat jemand vielleicht eine Idee, wie ich dafür sorgen kann, dass wirklich die ganze Zeile eingelesen wird, ohne das irgendwann ohne mein Zutun ein Zeilenumbruch eingefügt wird?

2) Wenn ich Sonderzeichen wie ä,ö,ß etc einlese, werden diese im Sharepoint als schwarze-Raute-mit-Fragezeichen dargestellt. Kann ich den Zeichensatz irgendwie auf die Deutsche Sprache umändern?

 

Vielen Dank und beste Grüße

Jan

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 6 Sept. 2010 10:15
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Aus Deinem Code werde ich nicht ganz schlau. Du hast da ziemlich viele Objekte, die Du nicht weiter verwendest, aber das kann auch daran liegen, daß Du Teile weggelassen hast.

Zu Deinen Problemen kann ich nicht wirklich was sagen. Irgendwo scheinst Du das falsche Encoding zu verwenden. SharePoint selbst speichert alles als Unicode und hat deshalb keinerlei Probleme mit irgendwelchen Sonderzeichen.

Hast Du schon die Methode SPWeb.GetFileAsString() getestet? Damit bekommst Du gleich den Dateiinhalt in einen String.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
53 Beiträge
Jan D Als Antwort am 6 Sept. 2010 13:57
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das sieht schon viel besser aus:

 

string gesamte_txt = oWebsiteSrc.GetFileAsString("http://SHAREPOINT/SUBSITE/SOC_BIB/SOC.txt");


foreach(string text in gesamte_txt.Split('['))
{
this.verarbeiten(text);
}

 

Allerdings bleibt das Problem mit den Sonderzeichen bestehen.

 

Danke und LG

 

Jan