谁能给个例子!

cyzzal 2003-06-10 09:58:16

一个asp.net将数据库数据写入exel模板的例子!
...全文
35 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wsssir 2003-06-10
  • 打赏
  • 举报
回复
我下面这个例子是把数据库的数据导出到服务器端的EXCEL文件里面的。
Sub ExportToExcel()
Dim xlsheet = New OWC.SpreadsheetClass()

Dim conn As SqlClient.SqlConnection
Dim cmdSelect As SqlClient.SqlCommand
Dim dtrQuery As SqlClient.SqlDataReader

conn = New SqlClient.SqlConnection("server=localhost;database=documents;uid=wss;pwd=wss")
conn.Open()
cmdSelect = New SqlClient.SqlCommand(Session("query"), conn)
dtrQuery = cmdSelect.ExecuteReader

Dim numberCols As Integer = dtrQuery.FieldCount
'test the fieldcount

Dim rows As Integer = 1
Dim i As Integer = 0

While dtrQuery.Read
For i = 0 To numberCols - 1
xlsheet.ActiveSheet.Cells(rows, i + 1) = dtrQuery.GetValue(i).ToString()

Next
rows += 1
End While

conn.Close()
dtrQuery.Close()

xlsheet.ActiveSheet.Export(Server.MapPath(".") + "\\" + txtFileName.Text, OWC.SheetExportActionEnum.ssExportActionNone)

End Sub

经过测试,绝对是可以实现的。必须引用Com组件中的 Microsoft Excel 9.0 Object Library
楼上那位说的比较详细,但看起来挺复杂的。
killerwc 2003-06-10
  • 打赏
  • 举报
回复
打开临时文件有两种方法:

1.将Excel直接嵌入客户端浏览器(见图二),代码如下:
string filename=Request["rptId"];
Response.Redirect(filename);
这里采用的是另外打开一个页面直接嵌入Excel文档的方法,上述代码首先取得文件路径,然后打开Excel文档。这种方式,浏览器的菜单将变成Excel的菜单,客户可以像使用Excel菜单一样直接在浏览器尚操纵打印。

2.将Excel下载到客户端由客户端Excel打开(见图三,图四),代码如下:
string destFileName=filename;
FileInfo fi=new FileInfo(destFileName);
Response.Clear();
Response.ClearHeaders();
Response.Buffer=false;
Response.ContentType="Application/x-msexcel";
Response.AppendHeader("Content-Disposition","attachment:filename="+Server.UrlEncode(Path.GetFileName(destFileName)));
Response.WriteFile(destFileName);
Response.Flush();
Response.End();


以上代码经过测试,要求:
1。需要引用Com组件中的 Microsoft Excel 9.0 Object Library
2。需要修改服务器端相关权限设置,主要是aspnet用户启动服务器端相关组件进程的权限
具体方法如下:

在服务器上点击开始—运行—输入:Dcomcnfg然后回车,系统将弹出分布是COM配置属性窗体,在“应用程序”页里面选择“Microsoft Excel 应用程序”,点击“属性”按钮,系统将弹出该应用程序的属性窗体。在“常规”页中的身份验证级别下拉列表中选择“无”,在“安全性”页中选中“使用自定义访问权限”和“使用自定义启动权限”,然后分别点击访问用户和启动用户对应的“编辑”按钮,在里面添加用户“everyone”;最后在“身份标示”页里面选中“交互式用户”。

希望对你有所帮助
killerwc 2003-06-10
  • 打赏
  • 举报
回复
1。创建摸版
2。将空的摸板文件拷贝到临时目录,用随机数命名
3。将数据写入临时摸版文件
4。调整格式
5。释放组件
----------------------------------------------
6。还可以加上 Response.Redirect(newPath); 在客户端打开临时文件
killerwc 2003-06-10
  • 打赏
  • 举报
回复
Excel.Application oExcel;
Excel.Workbook oBook;
Object oMissing = System.Reflection.Missing.Value;
oExcel = new Excel.Application();
string oldPath=Server.MapPath("..\\xls\\xls\\rpt_studentFamily.xls");
Random TempNameInt = new Random();
string TempName=TempNameInt.Next(100000).ToString();
string newPath=Server.MapPath("..\\xls\\xlsTemp\\") + TempName + ".xls";
File.Copy(oldPath,newPath);
oBook = oExcel.Workbooks.Open(newPath,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing, oMissing,oMissing,oMissing,oMissing, oMissing);
//oExcel.Visible =true;
System.Data.DataTable objTable=objDataSet.Tables[0];
DataView DV=new DataView();
DV.Table=objTable;
int i=7;
foreach(DataRowView objRow in DV)
{
oExcel.Cells[4,2]=objRow["工作单位性质"].ToString();
oExcel.Cells[i,1]=objRow["学生姓名"].ToString();
oExcel.Cells[i,2]=objRow["班级"].ToString();
oExcel.Cells[i,3]=objRow["家长姓名"].ToString();
oExcel.Cells[i,4]=objRow["家长年龄"].ToString();
oExcel.Cells[i,5]=objRow["政治面貌"].ToString();
oExcel.Cells[i,6]=objRow["工作单位"].ToString();
oExcel.Cells[i,7]=objRow["职务"].ToString();
oExcel.Cells[i,8]=objRow["电话"].ToString();
oExcel.Cells[i,9]=objRow["学历"].ToString();
i++;
}

Sheets sheets = oBook.Worksheets;
_Worksheet worksheet = (_Worksheet) sheets.get_Item(1);
// Range range1 = worksheet.get_Range("A3", "B4");
// range1.Select ();
// //range1.EntireRow.Insert(null,null);
// range1.EntireColumn.Font.Size =10;
//worksheet.PageSetup.PrintGridlines=true;
string rangeEnd= "I" + i.ToString();
Range tempRange = worksheet.get_Range("A6", rangeEnd);
tempRange.Select ();
//range1.EntireRow.Insert(null,null);
tempRange.Font.Size =9;
tempRange.Borders.LineStyle=1;
tempRange.Rows.RowHeight=18;
tempRange=null;
tempRange = worksheet.get_Range("A2","I3");
tempRange.Font.Size =18;
tempRange=null;
tempRange = worksheet.get_Range("A4","I6");
tempRange.Font.Size =10;
tempRange=null;
//tempRange.Borders.Weight=xlThin;
//worksheet.PageSetup.PrintGridlines=true;
oBook.Saved = true;
oExcel.UserControl = false;
oBook.Save();
// TempNameInt = new Random();
// TempName=TempNameInt.Next(100000).ToString();
// newPath=Server.MapPath("..\\xls\\xlsTemp\\") + TempName + ".xls";
// worksheet.SaveAs(newPath,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing, oMissing);
oExcel.Quit();
oMissing=null;
sheets=null;
tempRange=null;
worksheet=null;
oBook=null;
oExcel=null;
GC.Collect ();

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧