Excel报表开发(主要讲Excel的导入和导出)
一、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的导入和导出)的更多相关文章
- Excel报表开发(本节主要讲述导出到Excel操作)
一.Excel导入到GridView以及数据库操作比较简单,这儿不做过多讲解,需要注意的有二点: 1.设置IMEX=1将强制混合数据转换为文本. 2.解决Excel驱动程序默认读取8行:将" ...
- excel报表开发-- 根据datatable个数自动生成新sheet
总结一下很久之前做的报表小程序,今日有问题又调试了一下. DB中存在一个表,记录了ID<自增长>,SqlStatement<sql查询语句>及其他必要字段,比如SheetNam ...
- Excel报表开发
读取Excel数据 /// <summary> /// 封装方法 /// </summary> /// <param name="path">& ...
- 海量数据Excel报表利器——EasyExcel(一 利用反射机制导出Excel)
EasyExcel 写入(导出) 互联网的精髓就是共享,可以共享技术.共享经验.共享情感.共享快乐~ 很多年前就有这个想法了,从事IT行业时间也不短了,应该把自己工作和业余所学习的东西记录并分享出来, ...
- Java使用POI实现数据导出excel报表
Java使用POI实现数据导出excel报表 在上篇文章中,我们简单介绍了java读取word,excel和pdf文档内容 ,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式.不仅 ...
- C#中Excel的导入和导出的几种基本方式
在上一篇(http://www.cnblogs.com/fengchengjushi/p/3369386.html)介绍过,Excel也是数据持久化的一种实现方式.在C#中.我们常常会与Excel文件 ...
- ASP.NET Core MVC上传、导入、导出知多少
前言 本君已成夜猫子,本节我们来讲讲ASP.NET Core MVC中的上传,这两天才研究批量导入功能,本节顺便简单搞搞导入.导出,等博主弄妥当了再来和大家一并分享. .NET Core MVC上传 ...
- 报表开发之批量导入导出excel
在日常使用报表过程中,会有这样一种情况,你将Excel表分发给各个员工,员工填完后,统一整理成多个Excel,你需要将这些数据,用报表的填报功能,提交录入到数据库中,这样一来可避免到服务器机房录数据的 ...
- 报表工具如何实现多次导入Excel
很多人在开发报表的时候会遇到将多张表样相同的excel导入到模板,然后提交至数据库中.但问题是很多情况,在线导入不支持一次性选择多个excel,一次只能选择一个excel,也不能将多个excel中的数 ...
随机推荐
- List之Distinct()
针对数组可以用List.Distinct(),可以过滤掉重复的内容. 针对对象中的某个字段只能用Distinct(IEqualityComparer<T>) 用法: 1 public ...
- 【网络流量-二部图最大匹配】poj3041Asteroids
/* 这个问题将是每行一个x作为节点x,没有列y作为节点y,障碍物的坐标xy来自x至y的 边缘.图建的问题后,变成,拿得最少的点,因此,所有这些点与相邻边缘,即最小 点覆盖,与匈牙利算法来解决. -- ...
- linux_环境变量设置 utf-8
echo $LANG 显示编码 : en_US.UTF-8 英文urf8有时显示程序输出是? 解决方法: vim ~/.bashrc 最后一行追加: export LANG=zh_CN.UTF- ...
- Ubuntu下一个openldapserver部署步骤
1:安装zlib 下载zlib-1.2.3.tar.gz(或其它版本号) wget http://down1.chinaunix.net/distfiles/zlib-1.2.3.tar.gz # . ...
- Spring + Spring MVC + Hibernate
Spring + Spring MVC + Hibernate项目开发集成(注解) Posted on 2015-05-09 11:58 沐浴未来的我和你 阅读(307) 评论(0) 编辑 收藏 在自 ...
- CSharp设计模式读书笔记(9):组合模式(学习难度:★★★☆☆,使用频率:★★★★☆)
组合模式(Composite Pattern): 组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构.组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,组合模式又可 ...
- 详解linux vi命令用法
vi是所有UNIX系统都会提供的屏幕编辑器,它提供了一个视窗设备,通过它可以编辑文件.当然,对UNIX系统略有所知的人,或多或少都觉得vi超级难用,但vi是最基本的编辑器,所以希望读者能好好把它学起来 ...
- CentOs Linux 文件位置标记
vsFTP默认位置: 匿名:/var/ftp/ 用户:/home/用户名 配置文件:/etc/vsftpd/ (一般安装软件后都会在/etc/下生成一个软件相关的配置文件夹) 防火墙位置: /etc/ ...
- 关于WIN32.EXE变态木马下载器的解决办法
一.WIN32.EXE的来源:http://fdghewrtewrtyrew.biz/adv/130/win32.exe 二.运行后的表现:此WIN32.EXE通过80和8080端口访问若干个IP,若 ...
- C#播放流媒体的几种方法
原文:[转载]C#播放流媒体的几种方法 做视频开发要学的东西真多,不知道如何入门,乱打乱撞,慢慢摸索吧! 首先搭建Windows Meida Server ,方法很简单,试试就会.在这里需要声明的是, ...