c# 从sql 数据库生成 excel (转)

首先要在工程中添加com引用,选择Microsoft Excel 11.0 Object Liberty。

源代码如下(本例是在下生成公司的考勤表 测试代码):

1 using System;
2   using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Text;
7 using System.Windows.Forms;
8 using System.Data.SqlClient;
9 using Microsoft.Office.Interop.Excel;
10 using System.IO;
11 // using Microsoft.Office.Interop.Excel;
12
13 namespace AttToExcel
14 {
15 public partial class Form1 : Form
16 {
17 public Form1()
18 {
19 InitializeComponent();
20 }
21
22 private void button1_Click( object sender, EventArgs e)
23 {
24 Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
25 int rowIndex = 1 ;
26 int colIndex = 0 ;
27 excel.Application.Workbooks.Add( true );
28 System.Data.DataTable table = GetData();
29 // dealTable(table);
30
31 // 将所得到的表的列名,赋值给单元格
32 foreach (DataColumn col in table.Columns)
33 {
34 colIndex ++ ;
35 excel.Cells[ 1 , colIndex] = col.ColumnName;
36 }
37
38
39 // 同样方法处理数据
40 foreach (DataRow row in table.Rows)
41 {
42 rowIndex ++ ;
43 colIndex = 0 ;
44 foreach (DataColumn col in table.Columns)
45 {
46 colIndex ++ ;
47 excel.Cells[rowIndex, colIndex] = row[col.ColumnName].ToString();
48 }
49 }
50
51 Worksheet ws = (Worksheet)excel.ActiveSheet;
52 AutoFitColumn(ws, 5 );
53 // true则直接用excel打开得到的数据
54 excel.Visible = true ;
55
56 }
57 // 进行加班处理
58 private void dealTable(System.Data.DataTable table)
59 {
60
61 }
62 // 让excel列宽自适应宽度
63 public static void AutoFitColumn(Worksheet ws, int col)
64 {
65 ((Range)ws.Cells[ 1 , col]).EntireColumn.AutoFit();
66 }
67 // 获取数据库打卡记录数据
68 private System.Data.DataTable GetData()
69 {
70 SqlConnection conn = new SqlConnection( @" Server=127.0.0.1;Initial Catalog=attendance;Uid=sa;Pwd=; " );
71 String sqlText = sql;
73
89 SqlDataAdapter adapter = new SqlDataAdapter(sqlText, conn);
90
91 DataSet ds = new DataSet();
92 try
93 {
94 adapter.Fill(ds, " Customer " );
95 }
96 catch (Exception ex)
97 {
98 MessageBox.Show(ex.ToString());
99 }
100 return ds.Tables[ 0 ];
101 } // end GetData()
102
103 } // end public partial class
104 } // end namespace
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值