一、Excel数据导入

      连接字符串Excel2003版:

OleDbConnection conn = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Extended properties=\"Excel 8.0;\";Data Source=" + path);

      连接字符串Excel2007版:

string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + path + ";" + "Extended Properties=Excel 12.0;";
OleDbConnection conn = new OleDbConnection(strConn);

      1、将Excel的数据导入数据库,后台代码

          

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.OleDb; namespace 操作excel
{
public partial class excelToDataBase : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ }
public string ExportExcel(string path)
{
OleDbConnection conn = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Extended properties=\"Excel 8.0;\";Data Source=" + path);
conn.Open();
OleDbDataAdapter da = new OleDbDataAdapter("select* from [sheet1$]", conn);
DataSet ds = new DataSet();
da.Fill(ds);
string sql = string.Empty; for (int i = ; i < ds.Tables[].Rows.Count; i++)
{
sql += string.Format("insert into student values('{0}','{1}','{2}','{3}')", ds.Tables[].Rows[i][].ToString(), ds.Tables[].Rows[i][].ToString()
, ds.Tables[].Rows[i][].ToString(), ds.Tables[].Rows[i][].ToString()); }
int rowcount = DbHelper.ExecuteSql(sql);
if (rowcount>)
{ return "ok";
}
else
{ return "no";
} } protected void btnExport_Click(object sender, EventArgs e)
{
string path = Server.MapPath("student.xls");
if (ExportExcel(path) == "ok")
{
this.lbltext.Text="导入数据成功!";
}
else
{
this.lbltext.Text = "导入失败";
}
}
}
}

前台代码:

    <asp:Button ID="btnExport" runat="server" Text="导入数据"
onclick="btnExport_Click" /><br />
<asp:Label ID="lbltext" runat="server" Text=""></asp:Label>

      2、将Excel数据导入Gridview

    public partial class excelToGridView : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string path = Server.MapPath("~/student.xls");
gvExcel.DataSource = Getexcel(path);
gvExcel.DataBind(); } public DataSet Getexcel(string path)
{
OleDbConnection conn=new OleDbConnection ("provider=Microsoft.Jet.OLEDB.4.0;Extended properties=\"Excel 8.0;\";Data Source="+path);
conn.Open();
OleDbDataAdapter da = new OleDbDataAdapter("select* from [sheet1$]", conn);
DataSet ds = new DataSet();
da.Fill(ds);
conn.Close(); return ds;
}

二、Excel对象模型

    需要右键添加引用Excel  Library

    1、将数据库中的数据写入Excel,操作服务器(保存到服务器)

 protected void btnExport_Click(object sender, EventArgs e)
{
//创建Excel Application对象
Excel.Application app = new Excel.Application();
//创建workBook对象
Excel.Workbook workbook = app.Workbooks.Add(true);//需要获取模板
//创建worksheet对象
Excel.Worksheet worksheet = workbook.Worksheets[];
//设置工作表名称
worksheet.Name = "学生信息";
DataSet ds = DbHelper.Query("select stuNo as 学好,stuName as 姓名,stuSex as 性别,sruClassNo as 班级 from student");
//创建Excel名
for (int col = ; col < ds.Tables[].Columns.Count; col++)
{
worksheet.Cells[, col + ] = ds.Tables[].Columns[col].ColumnName; }
int row = ;
//创建Excel行
for (int i = ; i < ds.Tables[].Rows.Count; i++)
{
for (int j = ; j < ds.Tables[].Columns.Count; j++)
{
worksheet.Cells[row, j + ] = ds.Tables[].Rows[i][j].ToString();
}
row++;
}
//保存
workbook.SaveAs(Server.MapPath("~/Excel/student.xls"));
app.Workbooks.Close();
//退出Excel
app.Quit();
}

    2、将数据库中的数据写入Excel,操作客户端(保存到客户端)

    需要使用Aspose.Cells组件

 DataSet ds = DbHelper.Query("select stuNo,stuName,stuSex,sruClassNo from student");
if (ds.Tables[].Rows.Count>)
{
Workbook wb = new Workbook();
Worksheet ws = wb.Worksheets.Add("学生信息");
Cells cells = ws.Cells;
cells["A1"].PutValue("学号");
cells["B1"].PutValue("姓名");
cells["C1"].PutValue("性别");
cells["D1"].PutValue("班级");
for (int i = ; i < ds.Tables[].Rows.Count; i++)
{
for (int j = ; j < ds.Tables[].Columns.Count; j++)
{
cells[i + , (byte)j].PutValue(ds.Tables[].Rows[i][j]);
}
} SaveOptions so = wb.SaveOptions;
so.SaveFormat = SaveFormat.Auto;
wb.Save(HttpContext.Current.Response,"stud.xls",ContentDisposition.Attachment,so);
}

    

    

Excel报表开发(主要讲Excel的导入和导出)的更多相关文章

  1. Excel报表开发(本节主要讲述导出到Excel操作)

    一.Excel导入到GridView以及数据库操作比较简单,这儿不做过多讲解,需要注意的有二点: 1.设置IMEX=1将强制混合数据转换为文本. 2.解决Excel驱动程序默认读取8行:将" ...

  2. excel报表开发-- 根据datatable个数自动生成新sheet

    总结一下很久之前做的报表小程序,今日有问题又调试了一下. DB中存在一个表,记录了ID<自增长>,SqlStatement<sql查询语句>及其他必要字段,比如SheetNam ...

  3. Excel报表开发

    读取Excel数据 /// <summary> /// 封装方法 /// </summary> /// <param name="path">& ...

  4. 海量数据Excel报表利器——EasyExcel(一 利用反射机制导出Excel)

    EasyExcel 写入(导出) 互联网的精髓就是共享,可以共享技术.共享经验.共享情感.共享快乐~ 很多年前就有这个想法了,从事IT行业时间也不短了,应该把自己工作和业余所学习的东西记录并分享出来, ...

  5. Java使用POI实现数据导出excel报表

    Java使用POI实现数据导出excel报表 在上篇文章中,我们简单介绍了java读取word,excel和pdf文档内容 ,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式.不仅 ...

  6. C#中Excel的导入和导出的几种基本方式

    在上一篇(http://www.cnblogs.com/fengchengjushi/p/3369386.html)介绍过,Excel也是数据持久化的一种实现方式.在C#中.我们常常会与Excel文件 ...

  7. ASP.NET Core MVC上传、导入、导出知多少

    前言 本君已成夜猫子,本节我们来讲讲ASP.NET Core MVC中的上传,这两天才研究批量导入功能,本节顺便简单搞搞导入.导出,等博主弄妥当了再来和大家一并分享. .NET Core MVC上传 ...

  8. 报表开发之批量导入导出excel

    在日常使用报表过程中,会有这样一种情况,你将Excel表分发给各个员工,员工填完后,统一整理成多个Excel,你需要将这些数据,用报表的填报功能,提交录入到数据库中,这样一来可避免到服务器机房录数据的 ...

  9. 报表工具如何实现多次导入Excel

    很多人在开发报表的时候会遇到将多张表样相同的excel导入到模板,然后提交至数据库中.但问题是很多情况,在线导入不支持一次性选择多个excel,一次只能选择一个excel,也不能将多个excel中的数 ...

随机推荐

  1. 《python源代码分析》笔记 pythonVM一般表达式

    本文senlie原版的.转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.字节码指令 LOAD_CONST:从consts表中读取序号为i的元素并压入到执行时栈中 ...

  2. nova-compute[5410]: OSError: [Errno 13] Permission denied: &#39;图像路径&#39;

    前几天有 openstack-Nova 创建虚拟机拨弄了一下,结果重新启动后的今天 nova boot 创建虚拟机实例有错误,创建虚拟机出状况  他们是 error 视图 openstack 服务状态 ...

  3. linux_删除空文件(大小等于0的文件)的方法

    1: 查看 find . -name "*" -type f -size 0c 2:删除 find . -name "*" -type f -size 0c | ...

  4. Android中适用于ListView、GridView等组件的通用Adapter

    今天随便逛逛CSDN,看到主页上推荐了一篇文章Android 高速开发系列 打造万能的ListView GridView 适配器,刚好这两天写项目自己也封装了相似的CommonAdapter,曾经也在 ...

  5. js手机对应的多级导航分享

    js移动导航对应,您可以使用自适应时屏幕,当小画面在一定程度上的网站.使导航出现,The navigation effects such as the following figures:多级导航! ...

  6. windows phone8.1:Xml,Json序列化和反序列化

    原文:windows phone8.1:Xml,Json序列化和反序列化 小梦本例主要实现以下四点内容: 将Car对象序列化为xml 将Car对象序列化为Json 将xml反序列化为Car对象 将js ...

  7. 动态类(Dynamic)应用

    动态类(Dynamic)应用 背景: 在Coding中有时候会遇到一些需要解析的数据,可是数据的字段数量和名称未统一,我们没法定义实体类来对应.那么我们就会想到通过C#的dynamic动态类来实现,如 ...

  8. 观察者模式的程序实例C++

    一.什么是观察者模式 Observer模式也叫观察者模式,是由GoF提出的23种软件设计模式的一种.Observer模式是行为模式之中的一个,它的作用是当一个对象的状态发生变化时,可以自己主动通知其它 ...

  9. 我的MYSQL学习心得(十)

    原文:我的MYSQL学习心得(十) 我的MYSQL学习心得(十) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL ...

  10. HDU 1385 Minimum Transport Cost 最短路径题解

    本题就是使用Floyd算法求全部路径的最短路径,并且须要保存路径,并且更进一步须要依照字典顺序输出结果. 还是有一定难度的. Floyd有一种非常巧妙的记录数据的方法,大多都是使用这种方法记录数据的. ...