我的项目(Silverlight端)中的文件夹(Common)中有一个xlsx文件(New.xlsx)。
我想在按钮点击事件上访问该文件路径,并希望打开该文件。
我使用了以下路径:
string path = @"/Common/New.xlsx";
string path1 = excel.Workbooks.Open(path);
excel.Visible = true;
但它不起作用,我无法打开该文件。
如何使用Silverlight中的文件路径访问文件?
答案 0 :(得分:3)
您可以使用几个选项来访问相关文件。
SaveFileDialog
类保存文件。然后,用户必须选择他们想要保存文件的位置,然后手动打开它。public static byte[] GetBytesFromStream(Stream input){
byte[] buffer = new byte[16*1024];
using (MemoryStream ms = new MemoryStream()){
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0){
ms.Write(buffer, 0, read);
}
return ms.ToArray();
}
}
public void OnButtonClick(){
var templateUri = new Uri("/Common/New.xlsx, UriKind.Relative");
var templateStream = Application.GetResourceStream(templateUri).Stream;
var bytes = GetBytesFromStream(templateStream);
var sfd = new SaveFileDialog() {
DefaultExt = "xlsx",
Filter = "Excel Files (*.xlsx)|*.xlsx|All files(*.*)|*.*",
FilterIndex = 1
};
if (sfd.ShowDialog() == true) {
using (Stream stream = sfd.OpenFile()) {
stream.Write(bytes, 0, bytes.Length);
}
}
}
public void OnButtonClick(){
string link = "{the url/endpoint to the file on the server}";
System.Windows.Browser.HtmlPage.Window.Navigate(new Uri(link), "_blank");
}
AutomationFactory
路线走,但这需要进行大量配置更改,例如建议的here 我认为在服务器而不是客户端上安装这些东西要好得多。服务器更适合处理这种处理。
答案 1 :(得分:2)
尝试以下方法:
var TemplateUri = new Uri("/Common/New.xlsx, UriKind.Relative");
var stream = Application.GetResourceStream(sheetUri).Stream;
该文件部署在xap文件(这是一个zip文件)中,无法由磁盘上的普通文件处理。
我不清楚您使用的是哪个Excel库,但它应该允许您从Stream
加载数据。