如何从silverlight文件夹打开文件

本文关键字:文件 文件夹 silverlight | 更新日期: 2023-09-27 18:28:05

我在项目(Silverlight端)的文件夹(Common)中有一个xlsx文件(New.xlsx)。

我想在按钮点击事件中访问那个文件路径,并想打开那个文件。

我使用以下路径:

string path = @"/Common/New.xlsx";
string path1 = excel.Workbooks.Open(path);
excel.Visible = true;

但它不起作用,我无法打开那个文件。

如何在Silverlight中使用文件路径访问文件?

如何从silverlight文件夹打开文件

您可以使用一些选项来访问有问题的文件。

  • 您可以将文件的内容作为流获取,然后要求用户通过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路线,但这需要像这里建议的那样进行大量配置更改

我认为把这样的东西放在服务器上比放在客户端要好得多。服务器更适合处理此类处理。

尝试以下操作:

var TemplateUri = new Uri("/Common/New.xlsx, UriKind.Relative");
var stream = Application.GetResourceStream(sheetUri).Stream;

该文件部署在xap文件(这是一个zip文件)中,不能由磁盘上的普通文件处理。

我不清楚你使用的是什么Excel库,但它应该允许你从Stream加载数据。