最近在项目中,遇到一些需求,就是将数据导出来,以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)的更多相关文章

  1. vs2016 创建 vsto excel 文件项目的一个问题

    新工作需要些一个基于Excel开发一个工具,vs的 vsto 功能很好用,封装了基于开发office 开的一些工具.但是在实际使用时,创建项目总是报错,提示打开excel文件失败.项目是需要创建一个e ...

  2. Hive中的三种不同的数据导出方式介绍

    问题导读:1.导出本地文件系统和hdfs文件系统区别是什么?2.带有local命令是指导出本地还是hdfs文件系统?3.hive中,使用的insert与传统数据库insert的区别是什么?4.导出数据 ...

  3. 导入数据任务(id:373985)异常, 错误信息:解析导入文件错误,请检查导入文件内容,仅支持导入json格式数据及excel文件

    小程序导入,别人导出的数据库json文件,错误信息如下: 导入数据库失败, Error: Poll error, 导入数据任务(id:373985)异常,错误信息:解析导入文件错误,请检查导入文件内容 ...

  4. 使用头文件cfloat中的符号常量获知浮点类型数据的表数范围---gyy整理

    使用头文件cfloat中的符号常量获知浮点类型数据的表数范围 cfloat头文件包含了系统的浮点数的长度限制 头文件climits中的符号常量是获知整型数据的表数范围,并不能获取浮点类型数据的表数范围 ...

  5. 为什么在项目中data需要使用return返回数据呢?

    问:为什么在项目中data需要使用return返回数据呢? 答:不使用return包裹的数据会在项目的全局可见,会造成变量污染:使用return包裹后数据中变量只在当前组件中生效,不会影响其他组件.

  6. C#导出Excel文件Firefox中文件名乱码

    首先说明下:我的解决方法不一定适用于其他遇到该问题的人,因为情况多种多样,适合我的方法不一定适合别人,就像我在遇到问题时查到别人的解决方案放到我的代码里却不管用,所以这个方法仅供参考 这两天做了一个导 ...

  7. (Python)导出指定文件夹中as文件的完全限定类名

    AS3程序在编译的过程中,有一个特点是这样的,不管是项目中的类,还是标准库或者第三方库的类,编译的时候只会把用到的那些类文件编译进去,也就是说,某一些类,只要没有被主程序引用到,那这个文件是不会被编译 ...

  8. 通过正则表达式提取excel特定列中含有关键字的所有行数据

    在 Excel 中打开需要提取数据excel文件,使用 Alt+F11 快捷键打开 VBA 项目窗口,在左侧的工作表名称上点右键,选择查看代码,即可出现右侧的编辑代码窗口(如下图) 在代码窗口中输入以 ...

  9. vue项目中使用mockjs+axios模拟后台数据返回

    自己写练手项目的时候常常会遇到一个问题,没有后台接口,获取数据总是很麻烦,于是在网上找了下,发现一个挺好用的模拟后台接口数据的工具:mockjs.现在把自己在项目中使用的方法贴出来   先看下项目的目 ...

随机推荐

  1. javascript : 复杂数据结构拷贝实验

    数组深拷贝看起来很简单. array.concat()就行了. 但是,如果数组里有对象呢? 实际上,你以为你拷贝了对象,但实际上你只拷贝了对象的引用(指针)! 我们可以做个试验. // test le ...

  2. 【Floyd算法+贪心】 travel 计蒜客 - 45275

    题目: 有 n 个景点,从一个景点 i 旅行到另一个景点 j 要花费 Ai,j=Aj,i(n≤100),现在给出由 m(≤1e5) 个景点的组成序列 A,求:在所有 "有子序列 A 的序列中 ...

  3. element-ui的el-progress组件增加修改status状态

    需求:实现进度条增长中呈现百分比,达到100%后将el-progress的status设置为“success” 想法:element对于status只给出了'success', 'exception' ...

  4. three.js 欧拉角和四元数

    这篇郭先生就来说说欧拉角和四元数,欧拉角和四元数的优缺点是老生常谈的话题了,使用条件我就不多说了,我只说一下使用方法. 1. 欧拉角(Euler) 欧拉角描述一个旋转变换,通过指定轴顺序和其各个轴向上 ...

  5. 【Python】Async异步等待简单例子理解

    import time def run(coroutine): try: print("") coroutine.send(None) except StopIteration a ...

  6. JPA第三天

    学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"springdata"获取视频和教程资料! b站在线视 ...

  7. JavaScript高级程序设计(第三版) 2/25

    第一章 JavaScript简介 javascript 跟 java没有任何联系,可以这么说,基本上区别就相当于,老婆跟老婆饼.只是因为当初Netscape(js的公司)想搭上媒体热炒的Java的顺风 ...

  8. 点format方式输出星号字典的值是键

    dic = {'a':123,'b':456} print("{0}:{1}".format(*dic)) a:b 2020-05-08

  9. PHP array_walk_recursive() 函数

    实例 对数组中的每个元素应用用户自定义函数: <?phpfunction myfunction($value,$key){echo "The key $key has the valu ...

  10. 面试题:JVM 堆内存溢出后,其他线程是否可继续工作?

    来源:http://sina.lt/gqaM 最近网上出现一个美团面试题:“一个线程OOM后,其他线程还能运行吗?”.我看网上出现了很多不靠谱的答案.这道题其实很有难度,涉及的知识点有jvm内存分配. ...