导出Excel文件(项目中会遇到很多将一些数据导出Excel或者et)
最近在项目中,遇到一些需求,就是将数据导出来,以Excel文件为主:就自己简单的做一些demo:供初学者来学习:
// 定义一个保存文件的路径位置
SaveFileDialog dlgPath = new SaveFileDialog();
string sPath = string.Empty;
// 需要保存的格式
dlgPath.Filter = "Excel文件(*.xls)|*.xls"; // 对Excel相应的操作定义变量
ApplicationClass app = new ApplicationClass();
Microsoft.Office.Interop.Excel._Workbook _workBook = null; try
{
// 弹出要保存文件的位置(可选择也可以默认路径)
if (dlgPath.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
sPath = dlgPath.FileName;
}
else
{
return;
} Workbooks workBooks = app.Workbooks;
_workBook = workBooks.Add(true); Sheets sheets = _workBook.Sheets; Worksheet sheet = (Worksheet)sheets[]; //判断表头是为空
if (!string.IsNullOrEmpty(dt.TableName))
{
sheet.Name = dt.TableName;
} char sExcelColn = 'A';
char sExcelColnEx = 'A';
for (int i = ; i < dt.Columns.Count; i++)
{
// 设置Excel某列单元格的文本格式,从第二行开始
for (int index = ; index < dt.Rows.Count+; index++)
{
if (i > )
{
Range objRange = sheet.get_Range("A" + sExcelColnEx + index.ToString(), Type.Missing);
if (null!=objRange)
{
objRange.NumberFormatLocal = "@";
}
else {
break;
}
}
else
{
Range objRange = sheet.get_Range("A" + sExcelColn + index.ToString(), Type.Missing);
if (null != objRange)
{
objRange.NumberFormatLocal = "@";
}
}
}
if (i<=)
{
sExcelColn++;
}else
{
sExcelColnEx++;
}
}
int x = , y = ;
foreach (DataColumn cloumn in dt.Columns)
{
// 如果Caption不为空表头输出使用Caption,否则使用ColumnName
if (string.IsNullOrEmpty(cloumn.Caption.ToString()))
{
sheet.Cells[x, y++] = cloumn.ColumnName.ToString();
}
else
{ sheet.Cells[x, y++] = cloumn.Caption.ToString();
}
}
x++;
y = ; foreach (DataRow row in dt.Rows)
{
foreach (DataColumn column in dt.Columns)
{
sheet.Cells[x,y++] = row[column.ColumnName].ToString();
}
x++;
y = ;
}
_workBook.SaveAs(sPath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing); }
catch (Exception ex)
{ throw ex;
}
finally
{
if (_workBook!=null)
{
_workBook.Close(Type.Missing, Type.Missing, Type.Missing);
}
if (app!=null)
{
app.Quit();
}
}
上面的代码是将数据转换成Excel的过程:
我们在做一组假数据,看看效果:
// 表格数据
System.Data.DataTable dt = new System.Data.DataTable();
dt.Columns.Add("name");
dt.Columns.Add("age");
dt.Columns.Add("sex");
dt.Columns.Add("weight");
dt.Columns.Add("height");
dt.Columns.Add("adress");
dt.Columns.Add("phone");
dt.Columns.Add("workAdress"); DataRow dr = dt.NewRow();
dr["name"] = "万三窦";
dr["age"] = "";
dr["sex"] = "男";
dr["weight"] = "68kg";
dr["height"] = "167cm";
dr["adress"] = "丰台区大井";
dr["phone"] = "";
dr["workAdress"] = "金堂国际大厦配楼301";
dt.Rows.Add(dr);
我上面是用WindowForm做的demo:只需在界面加个按钮调用下,就可以,我们来看下效果

若有不正确的地方,请大家多多指教!
导出Excel文件(项目中会遇到很多将一些数据导出Excel或者et)的更多相关文章
- vs2016 创建 vsto excel 文件项目的一个问题
新工作需要些一个基于Excel开发一个工具,vs的 vsto 功能很好用,封装了基于开发office 开的一些工具.但是在实际使用时,创建项目总是报错,提示打开excel文件失败.项目是需要创建一个e ...
- Hive中的三种不同的数据导出方式介绍
问题导读:1.导出本地文件系统和hdfs文件系统区别是什么?2.带有local命令是指导出本地还是hdfs文件系统?3.hive中,使用的insert与传统数据库insert的区别是什么?4.导出数据 ...
- 导入数据任务(id:373985)异常, 错误信息:解析导入文件错误,请检查导入文件内容,仅支持导入json格式数据及excel文件
小程序导入,别人导出的数据库json文件,错误信息如下: 导入数据库失败, Error: Poll error, 导入数据任务(id:373985)异常,错误信息:解析导入文件错误,请检查导入文件内容 ...
- 使用头文件cfloat中的符号常量获知浮点类型数据的表数范围---gyy整理
使用头文件cfloat中的符号常量获知浮点类型数据的表数范围 cfloat头文件包含了系统的浮点数的长度限制 头文件climits中的符号常量是获知整型数据的表数范围,并不能获取浮点类型数据的表数范围 ...
- 为什么在项目中data需要使用return返回数据呢?
问:为什么在项目中data需要使用return返回数据呢? 答:不使用return包裹的数据会在项目的全局可见,会造成变量污染:使用return包裹后数据中变量只在当前组件中生效,不会影响其他组件.
- C#导出Excel文件Firefox中文件名乱码
首先说明下:我的解决方法不一定适用于其他遇到该问题的人,因为情况多种多样,适合我的方法不一定适合别人,就像我在遇到问题时查到别人的解决方案放到我的代码里却不管用,所以这个方法仅供参考 这两天做了一个导 ...
- (Python)导出指定文件夹中as文件的完全限定类名
AS3程序在编译的过程中,有一个特点是这样的,不管是项目中的类,还是标准库或者第三方库的类,编译的时候只会把用到的那些类文件编译进去,也就是说,某一些类,只要没有被主程序引用到,那这个文件是不会被编译 ...
- 通过正则表达式提取excel特定列中含有关键字的所有行数据
在 Excel 中打开需要提取数据excel文件,使用 Alt+F11 快捷键打开 VBA 项目窗口,在左侧的工作表名称上点右键,选择查看代码,即可出现右侧的编辑代码窗口(如下图) 在代码窗口中输入以 ...
- vue项目中使用mockjs+axios模拟后台数据返回
自己写练手项目的时候常常会遇到一个问题,没有后台接口,获取数据总是很麻烦,于是在网上找了下,发现一个挺好用的模拟后台接口数据的工具:mockjs.现在把自己在项目中使用的方法贴出来 先看下项目的目 ...
随机推荐
- JAVA集合一:ArrayList和LinkedList
JAVA集合一:ArrayList和LinkedList 参考链接: HOW2J.CN 前言 这几篇博客重点记录JAVA的几个重要的集合框架:ArrayList.LinkedList.HashMap. ...
- Vue使用定时器定时刷新页面
1. 需求说明 在前端开发中,往往会遇到页面需要实时刷新数据的情况,给用户最新的数据展示. 2. 逻辑分析 如果需要数据实时更新,我们自然是需要使用定时器,不断的调用接口数据,会相对的消耗内存. 3. ...
- WPF 有缩放时显示线条的问题
公司项目已经开发好几年了,用的WPF开发的,期间遇到好多问题,都是些小细节.很久没有写博客了,以后有时间还是需要写写博客啊!作为分享也好.记录也好,利人利己嘛. 今天主要说一下显示线条的问题,因为我们 ...
- SpringBoot 整合Mybatis + PageHelper 实现分页
前言: 现在公司大多数都实现了前后端分离,前端使用Vue.React.AngularJS 等框架,不用完全依赖后端.但是如果对于比较小型的项目,没必要前后端分离,而SpringBoot也基本抛弃了Js ...
- WPF入门教程(一)---基础
这篇主要讲WPF的开发基础,介绍了如何使用Visual Studio 2013创建一个WPF应用程序. 首先说一下学习WPF的基础知识: 1) 要会一门.NET所支持的编程语言.例如C#. 2) 会一 ...
- 放弃dagger?Anrdoi依赖注入框架koin
Koin 是什么 Koin 是为 Kotlin 开发者提供的一个实用型轻量级依赖注入框架,采用纯 Kotlin 语言编写而成,仅使用功能解析,无代理.无代码生成.无反射. 官网地址 优势 依赖注入好处 ...
- 附025.kubeadm部署Kubernetes更新证书
一 查看证书 1.1 查看过期时间-方式一 1 [root@master01 ~]# tree /etc/kubernetes/pki/ 2 [root@master01 ~]# for tls in ...
- BUUCTF-web ZJCTF,不过如此
很明显要利用伪协议读next.php base64解码后查看源码 <?php $id = $_GET['id']; $_SESSION['id'] = $id; function complex ...
- CSMA/CD ,现在的交换式以太网还用吗?谈全双工,半双工与CSMA/CD的关系
我们知道:以太网访问控制用的是CSMA/CD,即载波侦听多点接入/ 冲突检测,是以广播的方式将数据发送到所有端口: 我们还知道:交换机能主动学习端口所接设备的MAC地址,在获知该端口的MAC 地址后, ...
- [转]jquery如何判断checkbox(复选框)是否被选中,至少被选中一个
谁都知道 在html 如果一个复选框被选中 是 checked="checked". 但是我们如果用jquery alert($("#id").attr(&qu ...