C#如何表格型数据导出到Excel?
代码如下:
int intDataCount = myData.Tables[0].Rows.Count; Microsoft.Office.Interop.Excel.Application app = null;
Microsoft.Office.Interop.Excel.Workbook workbook = null;
Microsoft.Office.Interop.Excel.Worksheet sheet = null;
object missing = System.Reflection.Missing.Value; // 表示 System.Reflection.Missing 类的唯一实例。
string strPath = string.Empty;
string strFileName = string.Empty;
try
{
app = new Microsoft.Office.Interop.Excel.Application();
app.Visible = false; // 不显示,仅后台生成
workbook = app.Workbooks.Add(true); // 如果打开已存在文件,这里用Open,保存使用Save
// 添加sheet的方法
workbook.Worksheets.Add(missing, missing, missing, missing);
// 修改sheet名的方法,注意sheet的下标从1开始
sheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[];
sheet.Name = "new sheet name"; //想要将sheet的名称改为Sheet1,则需改
// 添加sheet的方法
// 注销 workbook.Worksheets.Add(missing, missing, missing, missing);
// 中间不变
//sheet.Name = "Sheet1"; //添加标题
app.Cells[, ] = strTitle;
app.Cells[, ] = "项目名称:" + myData.Tables[].Rows[][“columnName”].ToString();
//合并单元格
sheet.get_Range(sheet.Cells[, ], sheet.Cells[, ]).MergeCells = true;
sheet.get_Range(sheet.Cells[, ], sheet.Cells[, ]).MergeCells = true;
//居中对齐
sheet.get_Range(sheet.Cells[, ], sheet.Cells[, ]).HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
//设置字体
sheet.get_Range(sheet.Cells[, ], sheet.Cells[, ]).Font.Size = ;
sheet.get_Range(sheet.Cells[, ], sheet.Cells[, ]).HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;
// 设置字体和大小
//range = sheet.get_Range(sheet.Cells[1, 1], sheet.Cells[rowCount, columnCount]);
//range.Font.Name = “Arial”;
//range.Font.Size = 10; // 设置单元格的wrap text属性
sheet.get_Range(sheet.Cells[, ], sheet.Cells[intDataCount + , ]).WrapText = true;
// 设置单元格的数据格式为文本格式
sheet.get_Range(sheet.Cells[, ], sheet.Cells[intDataCount + , ]).NumberFormat = "@";
//设置自动调整列宽
sheet.get_Range(sheet.Cells[, ], sheet.Cells[intDataCount + , ]).EntireColumn.AutoFit();
//sheet.Range[sheet.Cells[1, 1], sheet.Cells[intDataCount + 1, 13]].EntireColumn.ColumnWidth = 20;
sheet.Range[sheet.Cells[1, 1], sheet.Cells[intDataCount + 1, 13]].WrapText = false;
sheet.Range[sheet.Cells[1, 1], sheet.Cells[intDataCount + 1, 13]].NumberFormat = "@";
sheet.Range[sheet.Cells[1, 1], sheet.Cells[intDataCount + 1, 13]].EntireRow.AutoFit();
sheet.Range[sheet.Cells[1, 1], sheet.Cells[intDataCount + 1, 13]].HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
Microsoft.Office.Interop.Excel.Range range;
Array arr = Array.CreateInstance(typeof(object), intDataCount + , );
// 不断的调用下面的的函数填充array中的内容
// 行,列均从0开始
arr.SetValue("列名1", , );
arr.SetValue("列名2", , );
arr.SetValue("列名3", , );
arr.SetValue("列名4", , );
arr.SetValue("列名5", , );
arr.SetValue("列名6", , );
int i = ;
foreach (DataRow row in myData.Tables[].Rows)
{
arr.SetValue(row["columnName1"], i, );
arr.SetValue(row["columnName2"], i, );
arr.SetValue(row["columnName3"], i, );
arr.SetValue(row["columnName4"], i, );
arr.SetValue(row["columnName5"], i, );
arr.SetValue(row["columnName6"], i, );
i++;
}
// 设置array数据,注意选择的行数和列数要与array行数和列数对应
//sheet.get_Range(sheet.Cells[, ], sheet.Cells[intDataCount + , ]).Value2 = arr;
sheet.Range[sheet.Cells[1, 1], sheet.Cells[intDataCount + 1, 13]].Value2 = arr;
// 这里给sheet填充内容部分略
// 如果文件已经存在又不想让“是否替换”的提示窗体显示出来,需要先调用File.Delete来删除文件
strFileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
strPath = Server.MapPath("~/upload");
workbook.SaveAs(strPath + "\\" + strFileName, missing, missing, missing, missing, missing,
Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, missing, missing,
missing, missing, missing);
HylExcel.NavigateUrl = string.Format(@"{0}/{1}/{2}", PageBase.UrlBase, PageBase.UploadDir, strFileName);
HylExcel.Text = string.Format("<span style='color:red;font-weight:bold;'>点这里下载Excel文件{0}</span>", strFileName);
workbook.Close(false, missing, missing);
app.Quit();
workbook = null;
app = null;
GC.Collect();
//FileInfo fi = new FileInfo(strPath + "\\" + strFileName);//excelFile为文件在服务器上的地址
//HttpResponse contextResponse = HttpContext.Current.Response;
//contextResponse.Clear();
// contextResponse.Buffer = true;
//contextResponse.Charset = "GB2312"; //设置了类型为中文防止乱码的出现
// contextResponse.AppendHeader("Content-Disposition", String.Format("attachment;filename={0}", fi.Name)); //定义输出文件和文件名
///contextResponse.AppendHeader("Content-Length", fi.Length.ToString());
//contextResponse.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
//contextResponse.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
//contextResponse.WriteFile(fi.FullName);
// contextResponse.Flush();
//fi.Delete();
}
catch (Exception ex)
{
if (app != null)
{
app.Quit();
app = null;
GC.Collect();
}
}
C#如何表格型数据导出到Excel?的更多相关文章
- html实现类似excel的复杂表格,及导出到excel
1. excellentexport.js https://github.com/jmaister/excellentexport/tree/2.0.3 2.fiddle example https ...
- 纯JS 将table表格导出到excel
html <div > <button type="button" onclick="getXlsFromTbl('tableExcel','myDiv ...
- asp.net将内容导出到Excel,Table表格数据(html)导出EXCEL
代码: /// <summary> /// HTML Table表格数据(html)导出EXCEL /// </summary> /// <param name=&quo ...
- 将HTML表格导出到EXCEL,兼容Firefox,支持中文
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 使用JavaScript把页面上的表格导出为Excel文件
如果在页面上展示了一个数据表格,而用户想把这个表格导出为Excel文件,那么在要求不高的情况下,可以不通过服务器生成表格,而是直接利用JavaScript的Blob和Object URL特性将表格导出 ...
- Python实现数据库一键导出为Excel表格
依赖 Python2711 xlwt MySQLdb 数据库相关 连接 获取字段信息 获取数据 Excel基础 workbook sheet 案例 封装 封装之后 测试结果 总结 数据库数据导出为ex ...
- 网站开发进阶(三十一)js如何将html表格导出为excel文件(后记)
js如何将html表格导出为excel文件(后记) 前言 项目前期做了个导出Excel表格的功能,但是经过测试发现只有在IE上才可以正确实现,在Chrome等浏览器中无法实现导出效果.经过上网搜索,尝 ...
- 网站开发进阶(二十五)js如何将html表格导出为excel文件
js如何将html表格导出为excel文件 赠人玫瑰,手留余香.若您感觉此篇博文对您有用,请花费2秒时间点个赞,您的鼓励是我不断前进的动力,共勉! jsp页面数据导出成excel的方法很 ...
- vue将表格导出为excel
vue将表格导出为excel 一:在项目中需要安装2个依赖项,如下命令: npm install --save file-saver xlsx 二:在vue文件中如下使用即可: <templat ...
随机推荐
- 2019.03.21 读书笔记 readonly与const
区别: const是编译时常量(指反编译时看到的源码是常量本身,而不是变量),自带static,只能修饰基元类型.枚举.字符串,readonly是运行时常量(全局变量或者构造赋值),不受类型限制,但在 ...
- Trees on the level UVA - 122 (二叉树的层次遍历)
题目链接:https://vjudge.net/problem/UVA-122 题目大意:输入一颗二叉树,你的任务是按从上到下,从左到右的顺序输出各个结点的值.每个结点都按照从根节点到它的移动序列给出 ...
- javascript实现移动端网页版阅读器
现在手机上的文本阅读app已经非常丰富,良好的阅读体验与海量的书库常常令我感到无比兴奋. 我想到8年前用一点几寸屏幕的mp3看电子书的情景,顿生一种淡淡的温馨.再久远一些,小的时候,我也经常和小伙伴们 ...
- 使用summernote编辑器上传图片,重写onImageUpload
JS部分:$('.summernote').summernote({ height: 200,//高度 tabsize: 2,//页面上的summernote编辑框的个数 lang: 'zh-CN', ...
- ubuntu下安装wireshark(以及配置非root)
https://jingyan.baidu.com/article/c74d60009d992f0f6a595de6.html Wireshark是世界上最流行的网络分析工具.这个强大的工具可以捕捉网 ...
- Kudu-Impala集成特性
不多说,直接上干货! Kudu-Impala 集成特性 CREATE / ALTER / DROP TABLE Impala 支持使用 Kudu 作为持久层来 creating(创建),alterin ...
- 01-取消文件与svn服务器的关联
有的时候一个和svn服务器关联的文件,svn的链接已经失效,但是文件还是显示和svn关联的状态. 下面主要是解决怎么取消一个文件和svn服务器的关联. 1 新建一个文本文件 在任意目录下新建一个文本文 ...
- Deloyment Descriptor Web.xml Analysis
https://javaee.github.io/tutorial/webapp003.html Web.xml详解分析: 该web.xml文件包含Facelets应用程序所需的几个元素.使用NetB ...
- html table 的属性
表格table th,td 文字顶部对齐 <th valign="top"></th> <td valign="top">& ...
- Python开发环境Wing IDE如何使用GTK和PyGObject
Wing IDE是一个集成开发环境,可用于编辑.测试和调试使用PyGObject为GTK编写的Python代码.Wing IDE提供自动完成.调用提示.一个强大的调试器,以及许多其他功能,可帮助用户编 ...