c# listview导出excel文件
首先在工程中需要添加对Microsoft Excel office 11.0 object的引用
生成excel的类代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace LvwToExcel
{
class CExcel
{
/// <summary>
/// 导出Excel文件
/// </summary>
/// <param name="lvwShow">数据源</param>
/// <param name="strExcelTitle">Excel文件名</param>
public void LvwToExcel(ListView lvwShow,string strExcelName)
{
int row = lvwShow.Items.Count;//listview行数
int col = lvwShow.Items[0].SubItems.Count;//listview列数
if (row == 0 || string.IsNullOrEmpty(strExcelName))
{
return;
}
if (row > 0)
{
Microsoft.Office.Interop.Excel._Application ExcelApp = new Microsoft.Office
.Interop.Excel.Application();
if (ExcelApp == null)
{
MessageBox.Show("无法创建Excel对象,可能你的系统没有安装Excel!!!");
return;
}
object m_objOpt = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Excel.Workbooks ExcleBooks = (Microsoft.Office.Interop.Excel.Workbooks)ExcelApp.Workbooks;
Microsoft.Office.Interop.Excel._Workbook ExcleBook=(Microsoft.Office.Interop.Excel._Workbook )(ExcleBooks.Add(m_objOpt));
Microsoft.Office.Interop.Excel._Worksheet ExcelSheet = (Microsoft.Office.Interop.Excel._Worksheet)ExcleBook.ActiveSheet;
ExcelApp.Visible = true;
//读取listview表头做为excel列标题,listview中,行和列的下标索引都是从0开始
for (int i = 1; i <= col; i++)
{
ExcelSheet.Cells[1, i] = lvwShow.Columns[i-1].Text;
}
for (int i = 0; i <row; i++)
{
ExcelSheet.Cells[i+2, 1] = lvwShow.Items[i].Text;//获取所有行第一列的值
for (int j = 1; j < col; j++)
{
ExcelSheet.Cells[i+2, j+1] = lvwShow.Items[i].SubItems[j].Text;//获取某一行某一列的值
}
}
ExcleBook.SaveAs(strExcelName);
//ExcelApp.Quit();//退出excel
ExcelApp = null;
ExcelSheet = null;
ExcleBooks = null;
ExcleBook = null;
}
}
/// <summary>
/// 保存Excel文件
/// </summary>
public void ExportExcel(ListView lvwShow)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.DefaultExt = "xls";
sfd.Filter = "Excel文件(*.xls)|*.xls";
if (sfd.ShowDialog() == DialogResult.OK)
{
LvwToExcel(lvwShow,sfd.FileName);
}
}
}
}
二winform窗体中添加一个Listview控件具体代码如下
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;
namespace LvwToExcel
{
public partial class FrmToExcel : Form
{
private SqlConnection con=new SqlConnection();
public FrmToExcel()
{
InitializeComponent();
}
public void initLvw()
{
listViewShow.FullRowSelect = true;
listViewShow.GridLines = true;
listViewShow.MultiSelect = false;
listViewShow.View = View.Details;
listViewShow.HideSelection = false;
listViewShow.Columns.Add("1", 100, HorizontalAlignment.Center);
listViewShow.Columns.Add("2", 100, HorizontalAlignment.Center);
listViewShow.Columns.Add("3", 100, HorizontalAlignment.Center);
listViewShow.Columns.Add("4", 100, HorizontalAlignment.Center);
}
private void FrmToExcel_Load(object sender, EventArgs e)
{
initLvw();
//连接数据库
string sqlConnect = "initial catalog=数据库名;server='服务器名';uid=sa;pwd=密码";
con = new SqlConnection(sqlConnect);
con.Open();
SqlDataReader DR;
SqlCommand sqlcom = new SqlCommand();
sqlcom.Connection = con;
string sqlStr = "select top 5 1,2,3,4 from item";
sqlcom.CommandText = sqlStr;
DR = sqlcom.ExecuteReader();
LvwShowTable(DR);
}
private void LvwShowTable(SqlDataReader dr)
{
//读取表中记录
while (dr.Read())
{
ListViewItem li = new ListViewItem();
li.SubItems.Clear();
li.SubItems[0].Text = dr["1"].ToString()==""?"NULL":dr["1"].ToString();
li.SubItems.Add(dr["2"].ToString() == "" ? "NULL" : dr["2"].ToString());
li.SubItems.Add(dr["3"].ToString()==""?"NULL":dr["3"].ToString());
li.SubItems.Add(dr["4"].ToString()==""?"NULL":dr["4"].ToString());
listViewShow.Items.Add (li);
}
}
private void btnToExcel_Click(object sender, EventArgs e)
{
CExcel excel = new CExcel();
excel.ExportExcel(listViewShow);
}
}
}
c# listview导出excel文件的更多相关文章
- ExtJS Grid导出excel文件
ExtJS Grid导出excel文件, 需下载POI:链接:http://pan.baidu.com/s/1i3lkPhF 密码:rqbg 1.将Grid表格数据连同表格列名传到后台 2.后台导出e ...
- PHP从数据库导出EXCEL文件
参考博客链接:http://www.cnblogs.com/huangcong/p/3687665.html 我的程序代码 原生导出Excel文件 <?phpheader('Content-ty ...
- jxl导出Excel文件
一.java项目实现读取Excel文件和导出Excel文件 实现读取和导出Excel文件的代码: package servlet; import java.io.FileInputStream; im ...
- PHP导出excel文件
现在教教你如何导入excel文件: 在我的文件储存里面有一个com文件夹的,将其解压放在ThinkPHP/Library/文件夹里面,然后就是写控制器啦!去调用这个插件: <?php names ...
- 【转】 (C#)利用Aspose.Cells组件导入导出excel文件
Aspose.Cells组件可以不依赖excel来导入导出excel文件: 导入: public static System.Data.DataTable ReadExcel(String strFi ...
- PHPExcel导出excel文件
今天园子刚开,先来个货顶下,后续园丁qing我会再慢慢种园子的,希望大家多来园子逛逛. PHPExcel导出excel文件,先说下重要的参数要记住的东西 impUser() 导入方法 exportEx ...
- 导出Excel文件
/// <summary> /// 类说明:Assistant /// 更新网站:[url=http://www.sufeinet.com/thread-655-1-1.html]http ...
- 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法
-----转载:http://blog.csdn.net/sgear/article/details/7663502 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格 ...
- MSSQL2005 导出excel文件
Title:MSSQL2005 导出excel文件 --2011-01-16 16:01 EXEC master..xp_cmdshell 'bcp "select * from 数据库名 ...
随机推荐
- 02-OC方法、属性
目录: 一.方法 二.实例变量 三.属性(点语法) 四.初始化方法(自定义构造方法) 回到顶部 一.方法 1 函数与方法有什么区别? 函数只是一个程序的代码段,与类无关. 方法,类的一部分,代表对象可 ...
- QLineEdit 仿QQ签名框
今天鼓捣了半天,终于实现了自定义Qt中的QlineEdit控件的大致效果. 这个问题对于新手而言,主要有以下几个难点: 1.继承QLineEdit控件 2.QSS设置QLineEdit的相关样式,可以 ...
- Qt学习之路(54): 自定义拖放数据对象
前面的例子都是使用的系统提供的拖放对象 QMimeData 进行拖放数据的存储,比如使用 QMimeData::setText() 创建文本,使用 QMimeData::urls() 创建 URL 对 ...
- git gitk命令
通过gitk命令,在单独的界面上查看项目源码在各个时间点上的代码提交情况. 各个commit 各个tag ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~` 更多详细的介绍 ...
- [HTML5实现人工智能]小游戏《井字棋》发布,据说IQ上200才能赢
一,什么是TicTacToe(井字棋) 本 游戏 为在下用lufylegend开发的第二款小游戏.此游戏是大家想必大家小时候都玩过,因为玩它很简单,只需要一张草稿纸和一只笔就能开始游戏,所以广受儿 ...
- android 从其他app接收分享的内容
Receiving Content from Other Apps[从其他app接收分享的内容] 就像你的程序能够发送数据到其他程序一样,其他程序也能够简单的接收发送过来的数据.需要考虑的是用户与你的 ...
- 普通图片转ascii码字符图
效果图 基本思路 把图片每个像素点的信息拿出来,最重要的是拿到rgb的值 把每个像素点由rgb转成灰度图像,即0-255 给0-255分级,把每个等级的像素点转换成ascii码,完成 实现 第一步:获 ...
- MVCC浅析(转)
在并发读写数据库时,读操作可能会不一致的数据(脏读).为了避免这种情况,需要实现数据库的并发访问控制,最简单的方式就是加锁访问.由于,加锁会将读写操作串行化,所以不会出现不一致的状态.但是,读操作会被 ...
- eclipse 默认jdk 的设置 eclipse.ini -vm 参数
eclipse 的配置文件 eclipse.ini 不仅仅可以设置eclipse的堆栈内存大小,也可设置默认使用的jdk版本. 一.现有个eclipse 默认启动jdk版本是jdk1.5,需更改为1. ...
- 九度OnlineJudge之1017:还是畅通工程
题目描述: 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可 ...