十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这个专业我也学得不是很好,用书上得例子吧。
发展壮大离不开广大客户长期以来的信赖与支持,我们将始终秉承“诚信为本、服务至上”的服务理念,坚持“二合一”的优良服务模式,真诚服务每家企业,认真做好每个细节,不断完善自我,成就企业,实现共赢。行业涉及塑料袋等,在网站建设公司、营销型网站、WAP手机网站、VI设计、软件开发等项目上具有丰富的设计经验。
某公司尽力需要了解公司在全国各地得销售情况,设计一个水晶报表。统计个地区得销售总额和全国总额
准备工作
用 SQL server 2000 创建一个数据库company 在该数据库中创建一个表Sales.用于储存区域销售数据
在表Sales 中添加若干条记录
设计报表
打开 Visual Studio.NET创建名为 Salesreport得 WINDOWS应用程序 将Form1.cs 名更改为 frmSalesReport.cs
frmSalesReport窗体得属性设置里。 吧 frmSalesReport.cs得Text属性更改为"区域销售报表"
把NAME属性更改为frmSalesReport。
在 VisualStudio.NET 菜单中选择 项目添加新项。在"添加新项"窗口得“类别”区域扩展 “本地项目项”,选择数据,在"模板"区域选择"数据集" 在"名称"那将Dataset1.xsd改名 SalesDetaset.xsd
单击"打开" 将生成一个新得结构文件 SalesDataset.xsd 该文件将显示在 ADO.NET数据集设计器中。
报表设置好后
在预览后导出 否则只有标题
Dim exportOpts As CRAXDRT.ExportOptions
Set exportOpts = Report.ExportOptions
exportOpts.DestinationType = crEDTDiskFile
exportOpts.DiskFileName = "D:\text.xls"
exportOpts.FormatType = crEFTExcel97 'Excel97格式
exportOpts.ExcelExportAllPages = True '导出所有页码
Report.Export (False)
CrystalReportViewer
dataset 定义数据源
.rpt 文件描述具体报表样式
再加一个调用报表的FORM,就可以实现简单的报表功能
Option Explicit
dim Report as New Cystal1
Private Sub Form_Load()
Screen.MousePointer = vbHourglass
'调用水晶报表时置鼠标为沙漏状 CRViewer91.ReportSource = Report '该语句的赋值将在后面被修改
CRViewer91.ViewReport
Screen.MousePointer = vbDefault '调用水晶报表完成后置鼠标为默认形状
End Sub
Private Sub Form_Resize()
CRViewer91.Top = 0
CRViewer91.Left = 0
CRViewer91.Height = ScaleHeight
CRViewer91.Width = ScaleWidth
End Sub
直接导出就行了,如果导出后是文本的话,就把里面的内容,复制到excel就行了。
如何从web页面导入excel单元格数据、又如何把查询出来的数据放到web页面上显示成客户需要的图表?并且导出到excel中?
有两种方案:
1.用Excel自动化技术。
引用Excel的类型库生成.Net的包装类。导入时采用页面放上传文件按钮的方法,在服务器端收到文件后,用excel自动化类打开excel文件,再学会VBA语法,书写大量的代码读取单元格,然后连接数据库保存。导出时,查询数据库,启动excel自动化对象,通过VBA语法填写单元格,保存成excel文件,再用Response.OutputStream输出到页面上,触发excel文件的下载保存框。缺点:容易在服务器端产生excel死进程,代码编写复杂、代码量大、还要掌握VBA语法,用户需要上传、下载操作
有人会说,显示数据时可以用网页直接显示,不用导出成excel。其实也很麻烦:用网页显示复杂的报表格式,网页设计工作量大;如果客户要求导出excel,这个工作就省不了;如果客户要求打印、打印预览、页面设置,比起excel浏览器的打印就捉襟见肘了。
2.用微软Office中间件——SOAOffice。(建议使用最新版的)
用SOAOffice输出Excel,就不会再有上述烦恼。通过SOAOffice不仅能够动态填充excel,读取excel单元格,而且还能在浏览器里直接浏览excel、或者下载、另存。SOAOffice提供标准C#.Net组件,组件在服务器端不使用自动化调用,稳定支持大量web并发访问,这是用com调用无法实现的。组件的属性方法都比较简单,易于调用,你完全不用去掌握复杂的VBA调用。
由于是纯.Net组件,所以服务器端不需安装office。 SOAOffice的excel组件SOAExcel含有Sheet、Cell等类似Excel的简化接口,调用简单。SOAExcel不但能能把数据库字段值动态填充到Excel单元格,还能把用户输入的单元格的值提出给开发者保存到数据库。
SOAExcel能够在客户端浏览器的网页里通过SOAOffice直接显示生成的Excel,用户不必先下载再打开观看内容。
举个导出excel的例子:
SOAOfficeX.ExcelResponse SOAExcel = new SOAOfficeX.ExcelResponse();
SOAOfficeX.ExcelResSheet sheet1 = SOAExcel.openSheet("Sheet1"); // 打开一个Sheet
sheet1.openCell("D"+String.valueOf(8+i)).setValue(rs.getString("Count")); //循环填充数据。
SOAOfficeX.SOAOfficeCtrl SOACtrl = new SOAOfficeX.SOAOfficeCtrl(response);
SOACtrl.assign(SOAExcel); // 绑定数据
// 打开模板并生成最终的excel报表
SOACtrl.webOpen("doc/test.xls", 1, UserName, "Excel.Sheet");
上述代码不但动态填充生成excel,而且在网页里直接显示生成的Excel给终端用户,由于使用了1打开模式,Excel是只读显示的。
读取excel单元格的代码也很简单:
SOAOfficeX.ExcelRequest SOAExcel = new SOAOfficeX.ExcelRequest();
SOAOfficeX.IExcelReqSheet sheetOrder = SOAExcel.OpenSheet("销售订单");
SOAOfficeX.IExcelReqCell cell1;
cell1 = sheetOrder.OpenCell("I5");//订单编码
string sOrderNum = cell1.Value;//cell1.Value就是读取的结果
Dim tempxlApp As New Excel.Application
Dim tempxlWorkbook As New Excel.Workbook
Dim tempxlSheet As New Excel.Worksheet
Set tempxlWorkbook = tempxlApp.Workbooks.Open("e:\test.xls")
tempxlApp.Visible = True
tempxlApp.DisplayAlerts = False
set tempxlSheet = tempxlWorkbook.Worksheets("sheet1")
'写入Excel
tempxlSheet.Range("A1").CopyFromRecordset tempRS
tempRS.Close
tempRS 为记录集
希望对你有所帮助!!!