excel抓取网页动态数据(Excel教程Excel函数Excel表格制作Excel2010Excel实用技巧Excel视频教程 )

优采云 发布时间: 2022-04-16 16:21

  excel抓取网页动态数据(Excel教程Excel函数Excel表格制作Excel2010Excel实用技巧Excel视频教程

)

  Excel中的数据透视表非常方便进行数据分析,很多商务人士对Excel的操作非常熟悉,所以使用Excel作为数据分析的界面是一个不错的选择。那么如何使用C#从数据库中抓取数据并在Excel中动态生成数据透视表呢?下面举例说明。

  一般来说,数据库的设计遵循规范化的原则,从而减少数据的冗余,但是对于数据分析,数据冗余可以提高数据加载的速度,所以为了演示数据透视表,现在建立一个视图在数据库中。, 将要分析的数据合并到一个视图中。如下所示:

  

  数据源准备好后,我们先构建一个web应用,然后使用NuGet加载Epplus包,如下图:

  

  在 index.aspx 首页中,编写以下脚本:

   1

2

3 DOCTYPE html>

4

5

6

7 Excel PivotTable

8

9

10

11

12

13

14

15

16

17

18 Excel PivotTable

19

20

21

22

23

24

25

27

28

29

30

31

33

34

35

36

37

38

39

41

42

43

44

45

46

47

48

50

51

52

53

55

56

57

58

60

61

62

63

64

65

66

67

68

69

70

71

  其中,TileJs 是一个开源的 javascript 库,其构建风格类似于 win8 Metro。

  编写后台脚本:

   1 using System;

2 using System.Collections.Generic;

3 using System.Linq;

4 using System.Web;

5 using System.Web.UI;

6 using System.Web.UI.WebControls;

7 using OfficeOpenXml;

8 using OfficeOpenXml.Table;

9 using OfficeOpenXml.ConditionalFormatting;

10 using OfficeOpenXml.Style;

11 using OfficeOpenXml.Utils;

12 using OfficeOpenXml.Table.PivotTable;

13 using System.IO;

14 using System.Data.SqlClient;

15 using System.Data;

16 namespace ExcelPivot.Web

17 {

18 public partial class index : System.Web.UI.Page

19 {

20 protected void Page_Load(object sender, EventArgs e)

21 {

22

23 }

24 private DataTable getDataSource()

25 {

26 //createDataTable();

27 //return ProductInfo;

28

29 SqlConnection conn = new SqlConnection();

30 conn.ConnectionString = "Data Source=.;Initial Catalog=olap;Persist Security Info=True;User ID=sa;Password=sa";

31 conn.Open();

32

33 SqlDataAdapter ada = new SqlDataAdapter("select * from v_pm_olap_test", conn);

34 DataSet ds = new DataSet();

35 ada.Fill(ds);

36

37 return ds.Tables[0];

38

39

40

41 }

42

43 protected void btn1_ServerClick(object sender, EventArgs e)

44 {

45 try

46 {

47 DataTable table = getDataSource();

48 string path = "_demo_" + System.Guid.NewGuid().ToString().Replace("-", "_") + ".xls";

49 //string path = "_demo.xls";

50 FileInfo fileInfo = new FileInfo(path);

51 var excel = new ExcelPackage(fileInfo);

52

53 var wsPivot = excel.Workbook.Worksheets.Add("Pivot");

54 var wsData = excel.Workbook.Worksheets.Add("Data");

55 wsData.Cells["A1"].LoadFromDataTable(table, true, OfficeOpenXml.Table.TableStyles.Medium6);

56 if (table.Rows.Count != 0)

57 {

58 foreach (DataColumn col in table.Columns)

59 {

60

61 if (col.DataType == typeof(System.DateTime))

62 {

63 var colNumber = col.Ordinal + 1;

64 var range = wsData.Cells[2, colNumber, table.Rows.Count + 1, colNumber];

65 range.Style.Numberformat.Format = "yyyy-MM-dd";

66 }

67 else

68 {

69

70 }

71 }

72 }

73

74 var dataRange = wsData.Cells[wsData.Dimension.Address.ToString()];

75 dataRange.AutoFitColumns();

76 var pivotTable = wsPivot.PivotTables.Add(wsPivot.Cells["A1"], dataRange, "Pivot");

77 pivotTable.MultipleFieldFilters = true;

78 pivotTable.RowGrandTotals = true;

79 pivotTable.ColumGrandTotals = true;

80 pivotTable.Compact = true;

81 pivotTable.CompactData = true;

82 pivotTable.GridDropZones = false;

83 pivotTable.Outline = false;

84 pivotTable.OutlineData = false;

85 pivotTable.ShowError = true;

86 pivotTable.ErrorCaption = "[error]";

87 pivotTable.ShowHeaders = true;

88 pivotTable.UseAutoFormatting = true;

89 pivotTable.ApplyWidthHeightFormats = true;

90 pivotTable.ShowDrill = true;

91 pivotTable.FirstDataCol = 3;

92 //pivotTable.RowHeaderCaption = "行";

93

94 //row field

95 var field004 = pivotTable.Fields["销售客户经理"];

96 pivotTable.RowFields.Add(field004);

97

98 var field001 = pivotTable.Fields["项目简称"];

99 pivotTable.RowFields.Add(field001);

100 //field001.ShowAll = false;

101

102 //column field

103 var field002 = pivotTable.Fields["年"];

104 pivotTable.ColumnFields.Add(field002);

105 field002.Sort = OfficeOpenXml.Table.PivotTable.eSortType.Ascending;

106 var field005 = pivotTable.Fields["月"];

107 pivotTable.ColumnFields.Add(field005);

108 field005.Sort = OfficeOpenXml.Table.PivotTable.eSortType.Ascending;

109

110 //data field

111 var field003 = pivotTable.Fields["回款金额"];

112 field003.Sort = OfficeOpenXml.Table.PivotTable.eSortType.Descending;

113 pivotTable.DataFields.Add(field003);

114

115 pivotTable.RowGrandTotals = false;

116 pivotTable.ColumGrandTotals = false;

117

118 //save file

119 excel.Save();

120 //open excel file

121 string file = @"C:\Windows\explorer.exe";

122 System.Diagnostics.Process.Start(file, path);

123

124 }

125 catch (Exception ex)

126 {

127 Response.Write(ex.Message);

128 }

129 }

130 }

131 }

  编译运行,如下图所示:

  

  点击【回报分析】,稍等片刻,会打开Excel,自动生成数据透视表,如下图:

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线