我想完成以下任务。
我有一个Web应用程序,通过它我将调用VSTO应用程序,我必须在excel工作簿的其中一个工作表中插入一些值
我将在Excel工作表中插入值,并且必须使用上传按钮上传到数据库。
到目前为止我做了什么。
我创建了一个网络应用解决方案。 “C:\实例\ WebVSTO \ WebVSTO \ WebVSTO”
我创建了一个VSTO解决方案。 “C:\实例\ VSTO2007 \ VSTO2007 \ VSTO2007.xlsx”
我在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();
我运行了Web应用程序,发现值已插入excel中。
我通过运行VSTO解决方案从值上传值,并将值上传到数据库。
问题
我面对上述问题。我该如何回应。
请告诉我。
提前致谢。
答案 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);
我没有测试它,但它应该可以工作。