C# 创建Excel或需不安装Office
第一种、Aspose.Cells.dll
- //如果需要饶过office Excel那么就看我最后的实现方法吧~!
- //我最后的实现是使用的第三方Aspose.Cells.dll
- //具了解这个dll一直免费,(第三方有风险,使用需谨慎)
- //创建excel
- Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook();
- Aspose.Cells.Worksheet sheet = workbook.Worksheets[0];
- sheet.FreezePanes(1, 1, 1, 0);//冻结第一行
- #region 第一行
- sheet.Cells["A1"].PutValue("登录名(loginID)");
- sheet.Cells["B1"].PutValue("密码(passWord)");
- sheet.Cells["C1"].PutValue("姓(familyName)");
- sheet.Cells["D1"].PutValue("名(firstName)");
- sheet.Cells["E1"].PutValue("性别(gender)");
- sheet.Cells["F1"].PutValue("出生时间(dateofBirth)");
- sheet.Cells["G1"].PutValue("手机号(cellphoneNum)");
- sheet.Cells["H1"].PutValue("身份证号(identityID)");
- sheet.Cells["I1"].PutValue("就职状态(jobStatus)");
- sheet.Cells["J1"].PutValue("公司电话(telephoneNum)");
- sheet.Cells["K1"].PutValue("邮箱(email)");
- sheet.Cells["L1"].PutValue("祖籍(nativeHome)");
- sheet.Cells["M1"].PutValue("毕业学校(graduateSchool)");
- sheet.Cells["N1"].PutValue("专业(major)");
- sheet.Cells["O1"].PutValue("毕业时间(graduateTime)");
- sheet.Cells["P1"].PutValue("学历(education)");
- sheet.Cells["Q1"].PutValue("邮编(zipCode)");
- sheet.Cells["R1"].PutValue("地址(address)");
- sheet.Cells["S1"].PutValue("入职时间(entryTime)");
- sheet.Cells["T1"].PutValue("离开时间(leaveTime)");
- sheet.Cells["U1"].PutValue("备注(remarks)");
- sheet.Cells["V1"].PutValue("部门(departmentID)");
- sheet.Cells["W1"].PutValue("职位(JobTypeID");
- #endregion
- #region 循环写入内容
- int count = 1;
- foreach (EmployeeInfo_tbl item in enterpriseInfo.Employees)
- {
- count = count + 1;
- sheet.Cells["A" + count].PutValue(item.loginID);
- sheet.Cells["B" + count].PutValue(item.passWord);
- sheet.Cells["C" + count].PutValue(item.familyName);//"姓(familyName)";
- sheet.Cells["D" + count].PutValue(item.firstName); //"名(firstName)";
- sheet.Cells["E" + count].PutValue(item.gender == 0 ? "女" : "男"); //"性别(gender)";
- sheet.Cells["F" + count].PutValue(item.dateofBirth.ToString() == "" ? null : item.dateofBirth.ToString()); //"出生时间(dateofBirth)";
- sheet.Cells["G" + count].PutValue(item.cellphoneNum.ToString());//"手机号(cellphoneNum)";
- sheet.Cells["H" + count].PutValue(item.identityID);//"身份证号(identityID)";
- sheet.Cells["I" + count].PutValue(item.jobStatus == 1 ? "在职" : "离职");//"就职状态(jobStatus)";
- sheet.Cells["J" + count].PutValue(item.telephoneNum);//"公司电话(telephoneNum)";
- sheet.Cells["K" + count].PutValue(item.email);//"邮箱(email)";
- sheet.Cells["L" + count].PutValue(item.nativeHome);//"祖籍(nativeHome)";
- sheet.Cells["M" + count].PutValue(item.graduateSchool);// "毕业学校(graduateSchool)";
- sheet.Cells["N" + count].PutValue(item.major);// "专业(major)";
- sheet.Cells["O" + count].PutValue(item.graduateTime.ToString() == "" ? null : item.graduateTime.ToString());//"毕业时间(graduateTime)";
- string ed = "";
- switch (item.education)
- {
- case 1:
- ed = "初中/小学";
- break;
- case 2:
- ed = "高中/中专";
- break;
- case 3:
- ed = "本科/专科";
- break;
- case 4:
- ed = "研究生以上";
- break;
- default:
- ed = null;
- break;
- }
- sheet.Cells["P" + count].PutValue(ed);// "学历(education)";
- sheet.Cells["Q" + count].PutValue(item.zipCode);// "邮编(zipCode)";
- sheet.Cells["R" + count].PutValue(item.address);//"地址(address)";
- sheet.Cells["S" + count].PutValue(item.entryTime.ToString() == "" ? null : item.entryTime.ToString());//"入职时间(entryTime)";
- sheet.Cells["T" + count].PutValue(item.leaveTime.ToString() == "" ? null : item.leaveTime.ToString());// "离开时间(leaveTime)";
- sheet.Cells["U" + count].PutValue(item.remarks);// "备注(remarks)";
- sheet.Cells["V" + count].PutValue(item.Department.departmentName);// "部门(departmentID)";
- sheet.Cells["W" + count].PutValue(item.JobType.jobName);// "职位(JobTypeID";
- }
- #endregion
- //保存
- workbook.Save(_FolderBrowserDialog.SelectedPath + @"\test.xls");
- 大致如此~!
第二种、NPOI
NPOI无需Office COM组件且不依赖Office,使用NPOI能够帮助开发者在没有安装微软Office的情况下读写Office 97-2003的文件,支持的文件格式包括xls, doc, ppt等。NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/Excel文档进行读写操作。
被人称为操作EXCEL的终极方案,例子如下:
- //引用
- using NPOI.HSSF.UserModel;
- using NPOI.HPSF;
- using NPOI.POIFS.FileSystem;
- using NPOI.SS.UserModel;
- //将WorkBook指到我们原本设计好的Templete Book1.xls
- using (IWorkbook wb = new HSSFWorkbook(new FileStream("D:/Book1.xls", FileMode.Open)))
- {
- try
- {
- //设定要使用的Sheet为第0个Sheet
- ISheet TempSheet = wb.GetSheetAt(0);
- int StartRow = 4;
- //tDS为Query回来的资料
- DataSet tDS = new DataSet();
- for (int i = 0; i < tDS.Tables[0].Rows.Count; i++)
- {
- //第一个Row要用Create的
- TempSheet.CreateRow(StartRow + i).CreateCell(0).SetCellValue(Convert.ToString(tDS.Tables[0].Rows[i][0]));
- //第二个Row之后直接用Get的
- TempSheet.GetRow(StartRow + i).CreateCell(1).SetCellValue(Convert.ToString(tDS.Tables[0].Rows[i][1]));
- TempSheet.GetRow(StartRow + i).CreateCell(2).SetCellValue(Convert.ToString(tDS.Tables[0].Rows[i][2]));
- TempSheet.GetRow(StartRow + i).CreateCell(3).SetCellValue(Convert.ToString(tDS.Tables[0].Rows[i][3]));
- TempSheet.GetRow(StartRow + i).CreateCell(4).SetCellValue(Convert.ToString(tDS.Tables[0].Rows[i][4]));
- TempSheet.GetRow(StartRow + i).CreateCell(5).SetCellValue(Convert.ToString(tDS.Tables[0].Rows[i][5]));
- TempSheet.GetRow(StartRow + i).CreateCell(6).SetCellValue(Convert.ToString(tDS.Tables[0].Rows[i][6]));
- TempSheet.GetRow(StartRow + i).CreateCell(7).SetCellValue(Convert.ToString(tDS.Tables[0].Rows[i][7]));
- TempSheet.GetRow(StartRow + i).CreateCell(8).SetCellValue(Convert.ToString(tDS.Tables[0].Rows[i][8]));
- TempSheet.GetRow(StartRow + i).CreateCell(9).SetCellValue(Convert.ToString(tDS.Tables[0].Rows[i][9]));
- TempSheet.GetRow(StartRow + i).CreateCell(10).SetCellValue(Convert.ToString(tDS.Tables[0].Rows[i][10]));
- TempSheet.GetRow(StartRow + i).CreateCell(11).SetCellValue(Convert.ToString(tDS.Tables[0].Rows[i][11]));
- TempSheet.GetRow(StartRow + i).CreateCell(12).SetCellValue(Convert.ToString(tDS.Tables[0].Rows[i][12]));
- }
- //将文档写到指定位置
- using (FileStream file = new FileStream("H:/Test_NPOI4.xls", FileMode.Create))
- {
- wb.Write(file);
- file.Close();
- file.Dispose();
- }
- }
- catch (Exception e)
- {
- string a = e.ToString();
- }
- }
C# 创建Excel或需不安装Office的更多相关文章
- 在没安装OFFICE的服务器SSIS中进行EXCEL的ETL操作!
由于OFFICE 2010的安装包比较庞大,如果仅仅为了在服务器中实现操作EXCEL,完全没有必要安装整个OFFICE,是否可以不装OFFICE也实现与OFFICE文件的互相操作呢?答案是肯定的,在S ...
- ASP.NET导出Excel(利用NPOI和EPPlus库,无需安装Office)
网上提供了很多Asp.net中操作Excel的方法,其中大部分是调用微软的Office组件,下面提供三个无须安装Office即可从Asp.net输出Excel的方法. 1 简单方法 //下面代码输出的 ...
- C#中导出EXCEL服务器端不用安装OFFICE
在实际开发过程中,有时候服务器端没安装OFFICE,你和服务器管理员去商量安装个OFFICE的时候,管理员很倔犟的不给你安装的时候,这个时候就可以考虑我这个方法是实现导出EXCEL了.如果你导出的EX ...
- VSTO之旅系列(二):创建Excel解决方案
原文:VSTO之旅系列(二):创建Excel解决方案 本专题概要 引言 创建VSTO项目 Excel对象模型 创建Excel外接程序 创建Excel文档级自定义项 小结 一.引言 也许很多朋友都没有听 ...
- Excel催化剂开源第4波-ClickOnce部署要点之导入数字证书及创建EXCEL信任文件夹
Excel催化刘插件使用Clickonce的部署方式发布插件,以满足用户使用插件过程中,需要对插件进行功能升级时,可以无痛地自动更新推送新版本.但Clickonce部署,对用户环境有较大的要求,前期首 ...
- C# 如何创建Excel多级分组
在Excel中如果能够将具有多级明细的数据进行分组显示,可以清晰地展示数据表格的整体结构,使整个文档具有一定层次感.根据需要设置显示或者隐藏分类数据下的详细信息,在便于数据查看.管理的同时也使文档更具 ...
- laravel5.5 excel扩展包的安装和使用
(文章引用来源 http://www.cnblogs.com/djwhome/p/9322112.html 有自己的补充用于记录) (在此次项目中,本人亲自尝试,标题中文无论如何转换(GBK.gb ...
- [.NET开发] C# 如何创建Excel多级分组
要设置显示或者隐藏分类数据下的详细信息,在便于数据查看.管理的同时也使文档更具美观性.那么,在C#中如何来创建Excel数据的多级分组显示呢?下面将进行详细阐述.方法中使用了免费版组件Free Spi ...
- Visual Studio 进行Excel相关开发,Microsoft.Office.Interop.Excel.dll库
1. Interop.Excel.dll 的查找 本文中将 Microsoft.Office.Interop.Excel.dll库简称为Interop.Excel.dll库 其实在使用Visual S ...
随机推荐
- 『Python基础-1 』 编程语言Python的基础背景知识
#『Python基础-1 』 编程语言Python的基础背景知识 目录: 1.编程语言 1.1 什么是编程语言 1.2 编程语言的种类 1.3 常见的编程语言 1.4 编译型语言和解释型语言的对比 2 ...
- BugkuWeb本地包含
知识点:$_REQUEST不是一个函数,它是一个超全局变量,里面包括有$_GET $_POST $_COOKIE的值,$_REPUEST 是接收了 $_GET $_POST $_COOKIE 三个的集 ...
- GDB 单步调试汇编
本文同时发表在 https://github.com/zhangyachen/zhangyachen.github.io/issues/134 之前在看汇编的时候一直是肉眼看GCC -S的结果,缺点是 ...
- HCA数据下载
HCA data downloads HCA data downloads PeRl` 还记得去年看的时候还是什么都没有,今年已经有数据可以下载了.
- MongoDB入门---文档查询操作之条件查询&and查询&or查询
经过前几天的学习之路,今天终于到了重头戏了.那就是文档查询操作.话不多说哈,直接看下语法: db.collection.find(query, projection) query :可选,使用查询操作 ...
- 用label实现横向瀑布流的方法
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXcAAAKxCAIAAAAn+3udAAAKqWlDQ1BJQ0MgUHJvZmlsZQAASImVlg
- [Python3.X]python 实现斐波那契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一 ...
- androd hook acitivity 启动流程,替换启动的activity(Android Instrumentation)
前言:如果程序想要知道有activity启动,如果想要拦截activity,然后跳转到指定的activity怎么办? 我们看下ActivityThread 里面: private Activity p ...
- spring-boot、spring-data-jpa、hibernate整合
一.Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置. ...
- WeTest功能优化第3期:业内首创,有声音的云真机
第3期功能优化目录 [云真机远程调试]音频同步传输实现测试有声 [兼容性测试报告]新增视频助力动态定位问题 [云真机远程调试]菜单栏优化助力机型选择 本期介绍的新功能,秉承创造用户需求的理念,在云真机 ...