.Net 使用 Intercom OP 调用 Excel 实现报表
来源:互联网 发布:易语言源码网站 编辑:程序博客网 时间:2024/04/27 03:37
回来写博客拉!原则上是每日一篇,不过周末一般比较偷懒一点,嘿嘿。。。。
Anyway, 今天复习的东西还是比较实用的(应该说每天的复习重点都很实用)
.net 一般报表都用水晶,但当用户要改改东西就是 excel, word 比较好了,黑帅当年的毕业设计就是用的这个技术
首先, 因为 Excel, Word 之类都是 COM 组件,而不是 .net (关于 COM 和 .net 的概念就不说了啊,这方面的资料一堆的)
要调用 3 个 Namespace
System.Reflection 用来取得 Assmbly 的,
System.Runtime.InteropServices 这个是用来处理 COM 的异常
Excel, 不说大家也知道是啥
Excel 四元素
1. Excel.Application 调用的主程序
2. Excel.workbook
3. Excel.worksheet
4. excel.chart (图表,没错,这里我就教大家做一个图文并茂的 Excel 报表)
初始化
xlsBook = xlsapp.Workbooks.Add()
xlsdoc = xlsBook.Worksheets.Add()
xlsdoc.Name = "Report" 这个就是名字拉
xlschart = xlsBook.Charts.Add
这个就是具体的
Dim excel_Cell = xlsdoc.Cells(X,Y)
这个就是具体的格子拉
要赋值的话就是 .value2
图表方面,用Excel.XlChartType. 选择
比如说xl3DPie
用 .SetSourceData 来额定区域
还有就是 App 的 Visible 居然也是可以调的
最后就是退出好像有点问题,所以用了两次 Finailize
Anyway, 具体的代码如下,这是 100% 原创(Shuan 哥你也写了很多呢:D)请注意源码例子的完整性,咳咳,设计直接抽取的,懒得改了,不懂得问俺,哈哈
Public Overloads Sub ExportAgenttoExcel(ByVal DataS As System.Data.DataTable, ByVal Comdat As String(), ByVal id As Integer)
Dim xlsapp As New Excel.Application
Dim xlsBook As Excel.Workbook
Dim xlsdoc As Excel.Worksheet
Dim xlschart As Excel.Chart
xlsBook = xlsapp.Workbooks.Add()
xlsdoc = xlsBook.Worksheets.Add()
xlsdoc.Name = "Report"
xlschart = xlsBook.Charts.Add
Dim count(Comdat.Length - 1) As Integer
Dim i, j As Integer
For i = 0 To Comdat.Length - 1 'Count initialization
count(i) = 0
Next
For i = 0 To DataS.Rows.Count - 1
For j = 0 To DataS.Columns.Count - 1 'Fill the actual Agent
If DataS.Columns(j).ColumnMapping <> MappingType.Hidden Then
Dim excel_Cell = xlsdoc.Cells(i * DataS.Columns.Count + j + 1, 1)
excel_Cell.value2 = DataS.Columns(j).Caption
excel_Cell = xlsdoc.Cells(i * DataS.Columns.Count + j + 1, 2)
excel_Cell.value2 = DataS.Rows(i).Item(j)
End If
Next
count(DataS.Rows(i).Item(id)) += 1
Next
Dim chartdoc = xlsBook.Worksheets.Add()
chartdoc.name = "Chart"
For i = 1 To count.Length
With chartdoc
.Range("A" + i.ToString()).Value = Comdat(i - 1)
.Range("B" + i.ToString()).Value = count(i - 1)
End With
Next
With xlschart
.ChartType = Excel.XlChartType.xl3DPie 'Here we are setting the type of chart we want
.SetSourceData(chartdoc.Range("A1:B4")) 'This is the range from where the chart will be built
.PlotArea.Interior.ColorIndex = 2
.ChartArea.Interior.ColorIndex = 2
.ChartArea.Interior.PatternColorIndex = 1
.Location(Excel.XlChartLocation.xlLocationAsObject, "Chart")
End With
xlsBook.SaveAs("tmpXls.xls")
xlsapp.Visible = True
If (Not xlsapp Is Nothing) Then
xlsapp.Quit()
xlsapp = Nothing
GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
GC.WaitForPendingFinalizers()
End If
End Sub
Dim xlsapp As New Excel.Application
Dim xlsBook As Excel.Workbook
Dim xlsdoc As Excel.Worksheet
Dim xlschart As Excel.Chart
xlsBook = xlsapp.Workbooks.Add()
xlsdoc = xlsBook.Worksheets.Add()
xlsdoc.Name = "Report"
xlschart = xlsBook.Charts.Add
Dim count(Comdat.Length - 1) As Integer
Dim i, j As Integer
For i = 0 To Comdat.Length - 1 'Count initialization
count(i) = 0
Next
For i = 0 To DataS.Rows.Count - 1
For j = 0 To DataS.Columns.Count - 1 'Fill the actual Agent
If DataS.Columns(j).ColumnMapping <> MappingType.Hidden Then
Dim excel_Cell = xlsdoc.Cells(i * DataS.Columns.Count + j + 1, 1)
excel_Cell.value2 = DataS.Columns(j).Caption
excel_Cell = xlsdoc.Cells(i * DataS.Columns.Count + j + 1, 2)
excel_Cell.value2 = DataS.Rows(i).Item(j)
End If
Next
count(DataS.Rows(i).Item(id)) += 1
Next
Dim chartdoc = xlsBook.Worksheets.Add()
chartdoc.name = "Chart"
For i = 1 To count.Length
With chartdoc
.Range("A" + i.ToString()).Value = Comdat(i - 1)
.Range("B" + i.ToString()).Value = count(i - 1)
End With
Next
With xlschart
.ChartType = Excel.XlChartType.xl3DPie 'Here we are setting the type of chart we want
.SetSourceData(chartdoc.Range("A1:B4")) 'This is the range from where the chart will be built
.PlotArea.Interior.ColorIndex = 2
.ChartArea.Interior.ColorIndex = 2
.ChartArea.Interior.PatternColorIndex = 1
.Location(Excel.XlChartLocation.xlLocationAsObject, "Chart")
End With
xlsBook.SaveAs("tmpXls.xls")
xlsapp.Visible = True
If (Not xlsapp Is Nothing) Then
xlsapp.Quit()
xlsapp = Nothing
GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
GC.WaitForPendingFinalizers()
End If
End Sub
- .Net 使用 Intercom OP 调用 Excel 实现报表
- ASP.Net中使用Excel做报表
- .net 导出Excel报表
- FastReport.Net报表中使用 Excel 文件作为数据源
- Asp.net 导出Excel报表
- Asp.net生成Excel报表
- 使用jsp实现word、excel格式报表打印
- 使用jsp实现word、excel格式报表打印
- 使用jsp实现word、excel格式报表打印
- 使用jsp实现word、excel格式报表打印(二)
- 使用jsp实现word、excel格式报表打印
- 使用JSP实现WORD、EXCEL格式报表打印
- 使用Text_IO实现EXCEL报表的PLL程序包
- 使用JasperReport制作PDF,Excel报表(Struts2实现)
- Java使用POI实现数据导出excel报表
- Java使用POI实现数据导出excel报表
- Java使用POI实现数据导出excel报表
- Java使用POI实现数据导出excel报表
- 数据库设计
- 关于java的事务处理和举例
- 闲置了好久
- oracle中的函数据
- java 数据库 连接池
- .Net 使用 Intercom OP 调用 Excel 实现报表
- eclipse提示JVM版本太低
- 人工智能http://cai.csu.edu.cn/jpkc/rengongzhineng/Index.htm
- VC2005的IntelliSense高CPU占用问题
- [ztjSQL]CAST 和 CONVERT
- 关于fprintf()和fscanf()
- JSP/SERVLET开发应用服务器软件BEA WebLogic的配置和部署
- 建议
- 认识Style Report