我想实现一个资料的浏览..在浏览的页面上可以提供保存内容
以xls 或是 doc 保存.也就是下载到本地思路是.在服务器端
加载一个excel 或 word 对象然后在內存中建立他們的工作區对象(也就是.doc或.xls的文件)把數据库中需要的数据写入工作区当中.然后保存然后以字节的形式将工作区对象读取到字节数组中用Response.BinaryWrite把字节数组写入到输出流Response.ContentType 类型可以自己定义.但有些问题..怎么运用excel 或 word的对象创建一個xls或doc?
看了他的方法都是open的..需要物理的文件.哪位做过的朋友帮帮忙啊~~~
以xls 或是 doc 保存.也就是下载到本地思路是.在服务器端
加载一个excel 或 word 对象然后在內存中建立他們的工作區对象(也就是.doc或.xls的文件)把數据库中需要的数据写入工作区当中.然后保存然后以字节的形式将工作区对象读取到字节数组中用Response.BinaryWrite把字节数组写入到输出流Response.ContentType 类型可以自己定义.但有些问题..怎么运用excel 或 word的对象创建一個xls或doc?
看了他的方法都是open的..需要物理的文件.哪位做过的朋友帮帮忙啊~~~
解决方案 »
- ASP.NET(C#)如何为按钮设定组合键?
- 关于SQL中DATEDIFF的一个问题。。
- System.Web.Caching.Cache 是存在于客户端 还是服务器端
- sql存储过程_谁能帮我详细解释一下下面的存储过程
- 關於dropdownlist 控件選擇後報錯的問題
- 在datagrid中如何设置一个字段可以添加不可修改?(附代码)
- 请教高手,怎样回到历史状态。迫不得已使用服务器端检查,检查不通过可以返回提交前的状态吗
- 请高手请教
- 如何在winform程序中(用WebBrowser Com组件)中调用浏览器另存为功能?
- treeview+detailsview更新
- 请问如何用ASP.NET和C#实现报表
- 招.Net C#程序员(广州)
能不能提示下。。写法?需不需要物理文件??我想这些东西都是在内存中..然后把数据直接写进去然后把整个.xls的对象都以字节方式读到http流中输出..
那些方法和属性在ASP.net对不上号啊
class AppTest
{
private Excel.ApplicationClass _x;
public static void Main0()
{
AppTest a = new AppTest();
a._x = new Excel.ApplicationClass();
a._x.UserControl = false;
for (int i = 0 ;i < 4; i++)
{
a.SaveToXls("D:\\test\\" + i + ".xls"); // 本例是在D盘下建立的test文件夹
}
a._x.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject((object) a._x);
System.GC.Collect();
} private void SaveToXls(string filename)
{
Excel.WorkbookClass wb = (Excel.WorkbookClass) this._x.Workbooks.Add(System.Reflection.Missing.Value);
for(int i = 1;i <= 4; i++)
{
this._x.Cells[i,1]=i.ToString();
this._x.Cells[i,2]="'bbb2";
this._x.Cells[i,3]="'ccc3";
this._x.Cells[i,4]="'aaa4";
}
wb.Saved = true;
this._x.ActiveWorkbook.SaveCopyAs(filename);
}
}
Public Shared Function DataTableToExcelCsv(ByVal dt As DataTable) As Boolean
'create title
Dim strTemp, strFileName As String
Dim sbExcel As New StringBuilder
Dim chEnter As Char = Chr(10)
Dim i, j As Integer
Dim bExcel() As Byte
Dim Dr As DataRow '第一行
sbExcel.Append(dt.Rows(0)("SearchKey"))
sbExcel.Append(chEnter)
dt.Rows(0)("SearchKey") = ""
'第二行以后
For i = 0 To dt.Rows.Count - 1
Dr = dt.Rows(i)
strTemp = ""
For j = 0 To dt.Columns.Count - 1
strTemp = strTemp + Dr(j).ToString().Trim() + ","
Next j
strTemp = strTemp + chEnter
sbExcel.Append(strTemp)
Next i 'csv保存路径
Dim savePath = "c:\" '文件名
Dim serverFile As String = Current.Session.SessionID & ".csv"
savePath += serverFile bl = Nothing bExcel = Encoding.Default.GetBytes(sbExcel.ToString()) Try
Dim fs As New FileStream(savePath, FileMode.OpenOrCreate, FileAccess.Write)
fs.Write(bExcel, 0, bExcel.Length)
fs.Close()
Catch ex As Exception
Return False
End Try Return True End Function在页面调用下列方法,下载到客户端,然后删除服务器端的文件:
Private Function DownloadFile() As Boolean
Try
Dim FileName As String
Dim savePath = "c:\"
bl = Nothing Dim serverFile As String = Session.SessionID & ".csv"
savePath += serverFile
'Client保存路径
Dim clientfile As String = DateTime.Now.ToString("yyyyMMdd_hhmmss") & ".csv"
'Read FileData
Dim fs As IO.FileStream = System.IO.File.OpenRead(savePath)
Dim FileData(fs.Length) As Byte
fs.Read(FileData, 0, fs.Length)
fs.Close()
'Delete File
System.IO.File.Delete(savePath) FileName = System.Web.HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(clientfile)) With Context.Response
.Clear()
.AddHeader("Content-Type", "application/x-binary")
.AddHeader("Content-Disposition", "inline;filename=" _
+ System.Convert.ToChar(34) + FileName + System.Convert.ToChar(34))
.BinaryWrite(FileData)
'.End()
End With Return True
Catch ex As Exception
Return False
End Try
End Function
==========================================================================
上面的DownloadFile方法写在一个新的aspx页中,假如有两个页面a.aspx,b.aspx,那么在a.aspx中调用DataTableToExcelCsv方法,然后response.redirect("b.aspx"),在b.aspx的page_load里,调用下面的方法.当然我写的是生成csv文件,你可以改成excel文件,思路是一样的