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中的数 ...
随机推荐
- 使用pfile 启动oracle 实例时,启动失败---db_recovery_file_dest參数值在os上不存在。
[oracle@vm22 ~]$ export ORACLE_SID=orcl [oracle@vm22 ~]$ sqlplus / as sysdba SQL*Plus: Release 10.2. ...
- crawler_jsoup HTML解析器_使用选择器语法来查找元素
参照:http://www.open-open.com/jsoup/selector-syntax.htm 使用选择器语法来查找元素 问题 你想使用类似于CSS或jQuery的语法来查找和操作元素. ...
- 绘制一个绿色矩形平面((50, 50)->(350, 350))
//VS2008+opencv2.4 //绘制一个绿色矩形平面 #include "stdafx.h" #include "highgui.h" #includ ...
- Mysql sql声明召回2 --正则表达式
这里简单回顾mysql在过滤后的数据使用正则表达式时.主要利用每方法将样品,或添加一些简短的说明. 下面说说提前,使用正则表达式是用来过滤数据 REGEXPkeyword 基本字符相匹配: SELEC ...
- JavaScript中获取当前项目的绝对路径
近期在做JavaWeb项目相关的东西,差点儿每天都遇到非常多问题,主要是由于自己对JavaWeb方面的知识不是非常清楚,尽量把自己在项目中遇到的问题都记录下来,方便以后查阅. 在我们的项目中有这种须要 ...
- C和指针 (pointers on C)——第一章:高速启动
大多数人并不认为有几类人猿学校计划非常赞同C学习好,然后看多本书. 仅仅作为读书笔记写.有时还包括一些题目和答案. 这样的公开栏,这两种玉引砖敲,对于自勉,鼓励王! 第一章:手 我每次都是复习的来写. ...
- SQL Server 得到SPID,唯一的sessionID
像.net中的session一样,假设能知道了数据库中的sessionID,那全部的操作都能知道了,由于有了这个唯一的身份识别的标识. 能够做的事情有非常多,如:当前哪个用户在做什么操作,在运行什么s ...
- 经典HTML5小游戏 支持各种浏览器 (围住神经猫)
源码地址: http://files.cnblogs.com/files/liujing379069296/MyCat.rar 插件地址:http://files.cnblogs.com/files/ ...
- c# Buffer.BlockCopy 合并 byte 数组
今天遇到点问题需要合并 多个 byte[] 参见 : http://q.cnblogs.com/q/30534/ 今天复习了 所有数组的基类是 Array
- Asp.net MVC + EF + Spring.Net 项目实践(一)
准备用几篇文章来做一个MVC的例子,为了给新同事做参考,也为自己做个知识储备. 首先,用VS2013创建一个空白解决方案StudentManageSystem,然后添加一个MVC应用程序(可参考ASP ...