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中的数 ...
随机推荐
- 使用Mockito进行单元测试【2】—— stub 和 高级特性[转]
一篇中介绍了Mockito的基本信息,现在接着介绍Mockito强大的stub功能 2. Mockito使用实例 5. 对连续的调用进行不同的返回 (iterator-style stubbing) ...
- Linq入门演练---(1)基本用法-分组,排序,内连接
这一节大家共同学习下LINQ的基本用法,主要包括LINQ的分组,排序,和内外连接. 1.分组 基本语法: group element by key element 表示查询结果返回的元素,key表示 ...
- oracle_修改Oracle数据库字符集 AL32UTF8;
修改数据库字符集 以支持维文等 utf8 停掉库 进入装载模式 ALTER SYSTEM ENABLE RESTRICTED SESSION; ALTER SYSTEM SET JOB_QUEUE_ ...
- linux_常用命令_(ls, lsof,nslookup)_查看文件按照时间排序
平时收集些用到的命令 方便使用 1: ls -lrt 按时间排序 展示 2:nslookup 查看dns解析 3:lsof -p 进程号 lsof `which httpd` //那个进程在使用 ...
- Linux svnserver存储路径和文件的详细解释
svn有两种存储方式:BDB和FSFS,眼下用的最多的是FSFS方式,这样的方式的话.通常是存储在\db\revs目录下,里面有一堆以版本命名的文件.如:0.1.2.3.4......,那个就是了 比 ...
- poj 1068 Parencodings 模拟
进入每个' ) '多少前' ( ', 我们力求在每' ) '多少前' ) ', 我的方法是最原始的图还原出来,去寻找')'. 用. . #include<stdio.h> #incl ...
- 认识bash这个shell
我们通过shell将我们输入的命令与内核通信,好让内核可以控制硬件来正确无误地工作bash是我们Linux默认的shell 用户界面(Shell,application)--------核心(Kern ...
- ZOJ3640之简单慨率DP
Help Me Escape Time Limit: 2 Seconds Memory Limit: 32768 KB Background If thou doest well, ...
- MySQL存储引擎差异化实验
本篇把MySQL最常用的存储引擎给大家做一个介绍,然后通过插入.修改和并发实验来了解和验证一下它们之间的一些差异. 一.MySQL存储引擎简介 存储引擎在MySQL结构里占据核心的位置,是上层抽象接口 ...
- Java获取.properties配置文件某一项value根据key值
public static String getProperty(String key){ InputStream in = PropertiesUtils.class.getResourceAsSt ...