C#向excel中写入数据的三种方式
时间:2022-04-29
本文章向大家介绍C#向excel中写入数据的三种方式,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
第一种:将DataGrid中的数据以流的形式写到excel中,格式以html的形式存在
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
Response.AppendHeader("Content-Disposition", "attachment;filename=DialoutTemplate.xls");
// 如果设置为GetEncoding("GB2312");导出的文件将会出现乱码!!!
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
//Response.ContentType = "application/vnd.ms-excel";//输出类型
//Response.Charset = "";
//关闭ViewState
EnableViewState = false;
System.IO.StringWriter tw = new System.IO.StringWriter();//将信息写入字符串
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);//在WEB窗体页上写出一系列连续的HTML特定字符和文本。
//此类提供ASP.NET服务器控件在将HTML内容呈现给客户端时所使用的格式化功能
//获取control的HTML
dg.RenderControl(hw);//将table中的内容输出到HtmlTextWriter对象中
// 把HTML写回浏览器
Response.Write(tw.ToString());
Response.Flush();
Response.End();
第二种:将数据源中的数据以文件流的形式写到excel中,格式以txt的形式存在
FileStream fs = new FileStream(Server.MapPath("report_export/DialoutTemplate.xls"), FileMode.Create, FileAccess.Write);
StreamWriter rw = new StreamWriter(fs, Encoding.Default);//建立StreamWriter为写作准备;
DataTable dt = GetDataTableSource();
int count = dt.Columns.Count;
string head = "";
string values = "";
for (int i = 0; i < count; i++)
{
string h = dt.Columns[i].ColumnName + "t";
string v = dt.Rows[0][i].ToString() + "t";
head += h;
values += v;
}
rw.WriteLine(head);
rw.WriteLine(values);
rw.Close();
fs.Close();
Response.Redirect("report_export/DialoutTemplate.xls");
第三种:将数据源中的数据直接写到excel中,格式以xls形式存在,好处导出的
数据可以直接导入,可以将数字格式自动转化为文本格式,可以减少
格式转化的繁琐环节,还可以预留将数字转换为文本的格式的行数,
可以完全自定义
Excel.Application xlApp;
Excel.Workbook xlBook;
Excel.Workbooks xlBooks;
//Excel.Range xlRange;
Excel.Sheets xlsheets;
Excel.Worksheet xlSheet;
int k = 0;
try
{
string strCurrentPath = Server.MapPath("report_export/DialoutTemplate.xls");
string FilePath = strCurrentPath;
FileInfo fi = new FileInfo(FilePath);
if (fi.Exists) //判断文件是否已经存在,如果存在就删除!
{
fi.Delete();
}
xlApp = new Excel.Application();
xlBooks = xlApp.Workbooks;
xlBook = xlBooks.Add(Type.Missing);
xlsheets = xlBook.Worksheets;
IntPtr intptr = new IntPtr(xlApp.Hwnd);
xlSheet = (Excel.Worksheet)xlsheets.get_Item(1);
DataTable dt = GetDataTableSource();
int count = dt.Columns.Count;
for (int i = 0; i < count; i++)
{
string h = dt.Columns[i].ColumnName;
string v = dt.Rows[0][i].ToString();
((Excel.Range)xlSheet.Cells[1, i + 1]).Value2 = h;
Excel.Range r1 = xlSheet.get_Range(xlSheet.Cells[1, 1], xlSheet.Cells[1, i + 1]);
r1.NumberFormatLocal = "@";
((Excel.Range)xlSheet.Cells[2, i + 1]).Value2 = v;
Excel.Range r2 = xlSheet.get_Range(xlSheet.Cells[2, 1], xlSheet.Cells[2, i + 1]);
r2.NumberFormatLocal = "@";
}
for (int j = 1; j < 500; j++)
{
Excel.Range r = xlSheet.get_Range(xlSheet.Cells[2 + j, 1], xlSheet.Cells[2 + j, count]);
r.NumberFormatLocal = "@";
}
xlBook.SaveAs(FilePath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
xlBook.Close(false, Type.Missing, Type.Missing);
xlBooks.Close();
xlApp.Quit();
Response.Redirect("report_export/DialoutTemplate.xls");
GetWindowThreadProcessId(intptr, out k);
System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k);
p.Kill();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
//xlRange = null;
xlSheet = null;
xlBook = null;
xlApp = null;
}
- MHN中心服务器搭建与树莓派蜜罐部署
- 如何在CDH中启用Spark Thrift
- 让你的以太坊 DApps 盈利的 6 种方法
- 赛博地球杯初赛第三名,ChaMd5安全团队的writeup
- 如何在Windows Server2012搭建DNS服务并配置泛域名解析
- 如何使用HBase快照实现跨集群全量与增量数据迁移
- 为什么你应该学习搭建区块链应用
- 如何在Hue中创建Ssh的Oozie工作流
- 如何在启用Sentry的CDH集群中使用UDF
- 区块链太火,小心你的服务器被动挖矿
- PY交易之简单沙盒绕过
- CentOS6.5安装CDH5.13
- N1CTF2018 APFS&Lipstick题解
- 虚拟机字节码执行引擎
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 关于IP地址的一些相关知识点
- vmware的三种网络模式
- 我的 Chrome 版本不支持生成二维码,30 分钟怒怼了一个插件,附源码
- Android开发(第一行代码 第二版) 常见异常和解决办法(基于Android Studio)(二)
- 大厂Java项目如何进行Maven多模块管理
- Android开发 经验技巧汇总(基于Android Studio)(一)
- 老板逼我用 Git,本地指令介绍
- Python全栈(三)数据库优化之5.MySQL自关联、外键与Python操作MySQL
- Android开发 经验技巧汇总(基于Android Studio)(二)
- 表格滑动和图片链接,mdnice安排上了!
- 数据库编程 MySQL 常见异常和解决办法
- 持续集成利器,GitHub Actions
- 已拿Offer!百度、字节跳动等后台面经
- Python Networkx基础知识及使用总结
- AkShare-沪深港通持股-个股排行