我正在使用visual studio,C#进行编码。 如上所述,有什么方法可以打开存储在Sharepoint文档库中的word文件?只需要打开word文件供我阅读。不必编辑或删除。
我试过了: System.Diagnostics.Process.Start(“iexplore.exe”,url)但它似乎不起作用。
尝试以下代码。显示我的标签没问题。但doc这个词也不会发布。
protected void GridView1_RowCommand(Object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Select")
{
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow row = GridView1.Rows[index];
this.Label1.Text = "You selected " + row.Cells[4].Text + ".";
System.Diagnostics.Process.Start(@"C:\Users\Administrator\Desktop\Test\Test.docx");
}
}
答案 0 :(得分:2)
这可能比听起来要困难得多。如果您尝试从服务器端对象模型执行此操作,那么您很可能会在会话0中运行。会话0是一个特殊的Windows会话服务,它不允许产生新的过程。要解决这个问题,您必须使用Windows API登录用户,然后控制其会话,从而退出会话0。我不会再走这条路了,因为你没有说明你实际上是这样做的。
如果您只是想在SharePoint上下载存储在文档库中的word文档,然后在客户端启动它,则可以使用以下命令下载并打开该文档:
ClientContext clientContext = new ClientContext("http://SharePoint/");
string serverRelativeUrlOfFile = "SharedDocuments/file.docx";
string fileDestinationPath = @"C:\Documents\file.docx";
using (FileInformation sharePointFile =
Microsoft.SharePoint.Client.File.OpenBinaryDirect(clientContext, serverRelativeUrlOfFile))
{
using (Stream destFile = System.IO.File.OpenWrite(fileDestinationPath))
{
byte[] buffer = new byte[8 * 1024];
int byteReadInLastRead;
while ((byteReadInLastRead = sharePointFile.Stream.Read(buffer, 0, buffer.Length)) > 0)
{
destFile.Write(buffer, 0, byteReadInLastRead);
}
}
}
System.Diagnostics.Process.Start(@"C:\Documents\file.docx");
编辑:注意,这使用SharePoint2010客户端对象模型,因为会话0隔离使服务器端对象模型的步骤变得更加困难,我不会在这里详细说明,除非它是请求。
编辑:在评论之后,很明显您正在尝试使用Webpart在客户端下载和执行文件。上面的代码来自SharePoint 2010客户端对象模型,但是来自C#版本。将它翻译成JavaScript版本应该是微不足道的,因为我已经向您展示了正确的C#版本。这会将文件下载到客户端。下载文件后,使用以下JavaScript / ActiveX执行该文件:
var objShell = new ActiveXObject("Shell.Application");
var strArguments = "";
var strDirectory = "";
var strOperation = "open";
var intShow = 1;
objShell.ShellExecute(FileLocation, strArguments, strDirectory, strOperation, intShow);
替换正确的参数。请注意,这只适用于Internet Explorer - 因为这个显然非常不安全的ActiveX被一些不太合适的浏览器阻止了 - 而且我只在IE8上测试过它。