如何下载VSTO Excel

时间:2011-01-23 15:05:58

标签: c# excel vsto

我想完成以下任务。

  1. 我有一个Web应用程序,通过它我将调用VSTO应用程序,我必须在excel工作簿的其中一个工作表中插入一些值

  2. 我将在Excel工作表中插入值,并且必须使用上传按钮上传到数据库。

  3. 到目前为止我做了什么。

    1. 我创建了一个网络应用解决方案。 “C:\实例\ WebVSTO \ WebVSTO \ WebVSTO”

    2. 我创建了一个VSTO解决方案。 “C:\实例\ VSTO2007 \ VSTO2007 \ VSTO2007.xlsx”

    3. 我在excel表格中插入值如下:

      System.Data.OleDb.OleDbConnection objConn = 
          new System.Data.OleDb.OleDbConnection(
          "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + 
          @"C:\Examples\VSTO2007\VSTO2007\VSTO2007.xlsx" +
          ";Extended Properties=Excel 8.0;");
      
      objConn.Open();
      
      System.Data.OleDb.OleDbCommand objCmd = new System.Data.OleDb.OleDbCommand();
      
      objCmd.Connection = objConn;
      
      objCmd.CommandText = "Insert into [Sheet1$]" + " values ('Test')";
      
      objCmd.ExecuteNonQuery();
      
      objConn.Close();
      
    4. 我运行了Web应用程序,发现值已插入excel中。

    5. 我通过运行VSTO解决方案从值上传值,并将值上传到数据库。

    6. 问题

      1. excel(仅限VSTO excel而不是整个解决方案)将被放置在不同的文件夹中。当我点击网络应用程序中的下载按钮时,excel将在客户端下载。
      2. 我面对上述问题。我该如何回应。

        请告诉我。

        提前致谢。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,这个问题就是一个非常普遍的问题:“我如何制作一个不在Web应用程序文件夹中的文件可供下载?”

这样做的简单方法是将二进制代码写入响应流并设置一些标题。

HttpResponse.Clear();
HttpResponse.BufferOutput = false;
HttpResponse.ContentType = "application/excel";
HttpResponse.AddHeader("content-disposition", "filename=VSTO2007.xlsx");

FileStream sourceFile = new FileStream(@"C:\Examples\VSTO2007\VSTO2007\VSTO2007.xlsx", FileMode.Open);
long FileSize;
FileSize = sourceFile.Length;
byte[] getContent = new byte[(int)FileSize];
sourceFile.Read(getContent, 0, (int)sourceFile.Length);
sourceFile.Close();

Response.BinaryWrite(getContent);

我没有测试它,但它应该可以工作。