c# 创建excel表头及内容
主要通过ajax调用函数Getinfo
1.定义表dh
DataTable dh = new DataTable();
2.创建表头
public void CreateCol(string ColumnName)
{
DataColumn dc = new DataColumn(ColumnName, Type.GetType("System.String"));
dh.Columns.Add(dc);
}
public void CreateRow(string ColumnName, string RowValue)
{
datarow[ColumnName] = RowValue;
}
3.定义表头
public void CreateCols()
{
CreateCol("文件名");
CreateCol("文件路径");
}
4.创建表的内容
public string GetInfo(string year,string szs,string szx)
{
try
{
CreateCols();//创建表头
dataSource.Open();
DataTable dt = GetFile(year,szs,szx);//获取数据库数据
if (dt != null && dt.Rows.Count > 0)
{
for(int i=0;i<dt.Rows.Count;i++)
{
DataRow dr = dt.Rows[i];
string NODE_NAME = dr["NODE_NAME"].ToString();
string LJ = dr["LJ"].ToString();
CreateRow("文件名",NODE_NAME);//对应表头名字
CreateRow("文件路径",LJ);
dh.Rows.Add(datarow);
dt_print = dh.Copy();//复制表到一个新的表中
clearDt();//清理表dh函数
}
}
string name = String.Empty;
if (this.Radio1.Checked == true) { name = this.Label2.Text; }
if (this.Radio2.Checked == true) { name = this.Label3.Text; }
if (this.Radio3.Checked == true) { name = this.Label6.Text; }
if (this.Radio4.Checked == true) { name = this.Label7.Text; }
System.Guid guid = Guid.NewGuid();
string filepath = System.Web.HttpContext.Current.Server.MapPath("~/") + "Upload\\" + guid.ToString() + "文件统计.xlsx";// path + guid.ToString() + "Excel导入规则错误提醒.xls";
ExportExcel("文件统计--"+name, dt_print, filepath);
return "ok";
}
catch (Exception ex)
{
this.method.WriteDataLog("获取项目的信息出错", ex.ToString());
return ex.Message.Trim();
}
finally
{
dataSource.Close();
}
}
5.excel导出函数
public bool ExportExcel(string reportName, DataTable dt, string saveFileName)
{
bool fileSaved = false;
Excel.Range range = null;
Excel.Workbooks workbooks = null;
Excel.Application xlApp = null;
Excel.Workbook workbook = null;
Excel.Worksheet worksheet = null;
try
{
//判断数据集中需要导出的表格数否为空
if (dt == null)
{
return false;
}
//判断是否安装Excel
//xlApp = new Excel.ApplicationClass();
xlApp = new Excel.Application();
if (xlApp == null)
{
return false;
}
workbooks = xlApp.Workbooks;
workbook = workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
worksheet = (Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
worksheet.Cells.Font.Size = 10;
long totalCount = dt.Rows.Count;
long rowRead = 0;
float percent = 0;//记录进度
int rowBack = 0;
if (reportName != string.Empty)
{
worksheet.Cells[1, 1] = reportName;
((Excel.Range)worksheet.Cells[1, 1]).Font.Size = 12;//字号
((Excel.Range)worksheet.Cells[1, 1]).Font.Bold = true;//加粗
}
else
{
rowBack = -1;
}
//写入字段
for (int i = 0; i < dt.Columns.Count; i++)
{
worksheet.Cells[2 + rowBack, i + 1] = dt.Columns[i].ColumnName;
range = (Excel.Range)worksheet.Cells[2 + rowBack, i + 1];
range.Interior.ColorIndex = 15;
range.Font.Bold = true;
}
//写入数值
for (int r = 0; r < dt.Rows.Count; r++)
{
for (int i = 0; i < dt.Columns.Count; i++)
{
worksheet.Cells[r + 3 + rowBack, i + 1] = "'" + dt.Rows[r][i].ToString();
}
rowRead++;
percent = ((float)(100 * rowRead)) / totalCount;//进度百分比
}
//range = worksheet.get_Range(worksheet.Cells[2, 1], worksheet.Cells[dt.Rows.Count + 2, dt.Columns.Count]);
range = worksheet.Range[worksheet.Cells[2, 1], worksheet.Cells[dt.Rows.Count + 2, dt.Columns.Count]];
range.BorderAround(Excel.XlLineStyle.xlContinuous, Excel.XlBorderWeight.xlThin, Excel.XlColorIndex.xlColorIndexAutomatic, null);
if (dt.Rows.Count > 0)
{
range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic;
range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].LineStyle = Excel.XlLineStyle.xlContinuous;
range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].Weight = Excel.XlBorderWeight.xlThin;
}
if (dt.Columns.Count > 1)
{
range.Borders[Excel.XlBordersIndex.xlInsideVertical].ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic;
range.Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlContinuous;
range.Borders[Excel.XlBordersIndex.xlInsideVertical].Weight = Excel.XlBorderWeight.xlThin;
}
//保存文件
if (saveFileName != "")
{
try
{
workbook.Saved = true;
workbook.SaveCopyAs(saveFileName);
fileSaved = true;
}
catch
{
fileSaved = false;
}
}
else
{
fileSaved = false;
}
}
catch (Exception ex)
{
method.WriteDataLog("生成excel出错", ex.ToString());
}
finally
{
//释放Excel对应的对象
if (range != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(range);
range = null;
}
if (worksheet != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
worksheet = null;
}
if (workbook != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
workbook = null;
}
if (workbooks != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbooks);
workbooks = null;
}
xlApp.Application.Workbooks.Close();
xlApp.Quit();
if (xlApp != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
xlApp = null;
}
GC.Collect();
}
return fileSaved;
}
6.清理表函数
public void clearDt()
{
datarow = null;
datarow = dh.NewRow();
}
7.获取数据库内容函数
public DataTable GetFile(string year, string szs, string szx)
{
DataTable dt = new DataTable();
string sql = string.Empty;
string jq = "substr(node_name,-3)";
string lx = String.Empty;
string lx1 = string.Empty;
string lx2 = string.Empty;
string lx3 = string.Empty;
try
{
sql = "select * from(select cg_guid,node_name,'C:\\Zjzs\\paltfam\\gxcg'||'\\'||substr(xs_dm,0,4)||'\\'||xs_dm||'\\'||node_name as lj,node_type,year,xs_dm from tdzz.T_GDZLNDCG union all select cg_guid,node_name,'C:\\Zjzs\\paltfam\\ndgxcg'||'\\'||substr(xs_dm,0,4)||'\\'||xs_dm||'\\'||node_name,node_type,year,xs_dm from tdzz.T_GDZLNDGXCG union all select cg_guid,node_name,'C:\\Zjzs\\paltfam\\ndgxcg'||'\\'||substr(xs_dm,0,4)||'\\'||xs_dm||'\\'||node_name,node_type,year,xs_dm from tdzz.T_GDZLJCCG) where node_type='1' ";
lx = jq + "='dbf' or " + jq + "='prj' or " + jq + "='sbn' or " + jq + "='sbx' or " + jq + "='shp' or " + jq + "='shx' or " + jq + "='mdb' or " + jq + "='mxd'";
lx1 = jq + "='txt' or " + jq + "='doc' or substr(node_name,-4)='docx' or " + jq + "='pdf'";
lx2 = jq + "='tif' or " + jq + "='jpg' or " + jq + "='jpeg' or " + jq + "='png' or " + jq + "='pdf' ";
lx3 = jq + "='xls' or substr(node_name,-4)='xlsx'";
if (!string.IsNullOrEmpty(year)) { sql += "and year='" + year + "'"; }
if (this.Radio1.Checked == true) { sql += " and ("+ lx+")"; }
if (this.Radio2.Checked == true) { sql += " and ("+lx2+")"; }
if (this.Radio3.Checked == true) { sql += " and ("+lx1+")"; }
if (this.Radio4.Checked == true) { sql += " and ("+lx3+")"; }
if (!string.IsNullOrEmpty(szx)) { sql += " and xs_dm='" + szx + "'"; }
if (!string.IsNullOrEmpty(szs)) { sql += " and substr(xs_dm,0,4)='" + szs + "'"; }
method.WriteDataLog("文件统计测试", sql);
dt = tdzz.GetTableData(sql);
hidcount.Value = dt.Rows.Count.ToString();
}
catch (Exception ex)
{
method.WriteDataLog("获取文件出错", ex.ToString() + "<br/>sql:" + sql);
}
return dt;
}

c# 创建excel表头及内容的更多相关文章
- C# 创建Excel并写入内容
1 增加应用 Microsoft.Office.Interop.Excel 2 引用命名空间 using Excel = Microsoft.Office. ...
- 使用Java创建Excel,并添加内容
使用Java创建Excel,并添加内容 一.依赖的Jar包 jxl.jar,使用jxl操作Excel Jxl是一个开源的Java Excel API项目,通过Jxl,Java可以很方便的操作微软的Ex ...
- 使用NPOI创建Excel
一.NPOI 函式庫: NPOI 函式庫檔案有七個,NPOI 函式庫可以在 http://npoi.codeplex.com 中下載,分別是: NPOI.DLL:NPOI 核心函式庫. NPOI.DD ...
- Java Struts2 POI创建Excel文件并实现文件下载
Java Struts2 POI创建Excel文件并实现文件下载2013-09-04 18:53 6059人阅读 评论(1) 收藏 举报 分类: Java EE(49) Struts(6) 版权声明: ...
- C#创建Excel文件并将数据导出到Excel文件
工具原料: Windows 7,Visual Studio 2010, Microsoft Office 2007 创建解决方案 菜单>新建>项目>Windows窗体应用程序: 添加 ...
- sharepoint 2010 如何创建文档库内容类型content type
转:http://biancheng.dnbcw.info/linux/441643.html 这次主要是记录下,如何来创建文档内容类型,例如新建文档的时候,可以选择不同模板,有word,excel文 ...
- VSTO之旅系列(二):创建Excel解决方案
原文:VSTO之旅系列(二):创建Excel解决方案 本专题概要 引言 创建VSTO项目 Excel对象模型 创建Excel外接程序 创建Excel文档级自定义项 小结 一.引言 也许很多朋友都没有听 ...
- NPOI 创建Excel,数据读取与写入
<1> using System; using System.Collections.Generic; using System.Linq; using System.Web; using ...
- Jxl创建Excel文件和解析Excel文件
import java.io.File; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; im ...
随机推荐
- HTML文本框样式大全
粘贴自Christian.Cao 博客园地址 : https://www.cnblogs.com/QQ862668193/p/6893797.html 输入框景背景透明:<input style ...
- 关于Python中读取写入文件并进行文件与用户交互的操作
一.提前知识点 在python中是同样和其他语言一样可以进行文件的读取写入操作,值得注意的是,Python中打开文件读取的方式有几种,分别是以下几种: f = open('username.txt') ...
- vue 对列表数组删除和增加
很重要,一定要好好研究 https://cn.vuejs.org/v2/guide/list.html#%E6%9B%BF%E6%8D%A2%E6%95%B0%E7%BB%84
- Java核心技术第五章——1.类、超类、子类(2)
继上一篇Java核心技术第五章——1.类.超类.子类(1) 6.重载解析 假如调用ClassName.Method(args) 1.编译器列出类ClassName所有名为Method的方法. 2.编译 ...
- Pytorch实战1:线性回归(Linear Regresion)
GitHub代码练习地址:https://github.com/Neo-ML/MachineLearningPractice/blob/master/Pytorch01_LinearRegressio ...
- NuGet 手动清除缓存不起作用
问题 有时更新了一些内网的程序库/包,但仅仅是一些小的更改,不想增加版本号再推送到内网服务器.手动删除了 .nuget 文件夹下的相关包文件,但是使用 Visual Studio 重新构建的时候,其使 ...
- springboot~zuul实现网关
网关在微服务里的角色 在微服务架构体系里,网关是非常重要的一个环节,它主要实现了一些功能的统一处理,包括了: 统一授权 统一异常处理 路由导向 跨域处理 限流 实践一下 1 添加依赖 dependen ...
- Java基础知识回顾之五 ----- 多线程
前言 在上一篇文章中,回顾了Java的集合.而在本篇文章中主要介绍多线程的相关知识.主要介绍的知识点为线程的介绍.多线程的使用.以及在多线程中使用的一些方法. 线程和进程 线程 表示进程中负责程序执行 ...
- Spring Boot 2.0 配置图文教程
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 本章内容 自定义属性快速入门 外化配置 自动配置 自定义创建 ...
- [转]How to Download and Setup Blue Prism
本文转自:https://www.hopetutors.com/blog/uncategorized/how-to-download-and-setup-blue-prism/ The Downloa ...