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 ...
随机推荐
- 20190402-display展现、float浮动
目录 1.display展现 dispaly:"none | block | inline | inline-block | list-item | run-in(主流浏览器不支持) | t ...
- solr搭建(linux)
Solr版本:7.4.0 Tomcat版本:8.5 Jdk版本:1.8 最好在root用户下进行操作,为了更方便初学者理解,选用ubuntu操作,当然用命令操作过程是一样的,会命令操作的话看懂图形化操 ...
- Java核心技术第八章——泛型程序设计(1)
1.泛型程序设计 泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用.例如:不希望为了聚集String和Integer对象分别设计不同的类.(个人觉得此处说的聚集译为:创建一个对象,属性可以为 ...
- Java数据结构和算法 - 数组
Q: 数组的创建? A: Java中有两种数据类型,基本类型和对象类型,在许多编程语言中(甚至面向对象语言C++),数组也是基本类型.但在Java中把数组当做对象来看.因此在创建数组时,必须使用new ...
- 【转载】 mybatis入门系列四之动态SQL
mybatis 详解(五)------动态SQL 目录 1.动态SQL:if 语句 2.动态SQL:if+where 语句 3.动态SQL:if+set 语句 4.动态SQL:choose(when, ...
- .NET Core微服务之基于IdentityServer建立授权与验证服务(续)
Tip: 此篇已加入.NET Core微服务基础系列文章索引 上一篇我们基于IdentityServer4建立了一个AuthorizationServer,并且继承了QuickStartUI,能够成功 ...
- unity中ScriptableObject在assetbundle中的加载
转载请标明出处:http://www.cnblogs.com/zblade/ 以前都是写一些个人的调研博客,从今天开始,也写一些个人在开发中遇到的一些可以分享的趟坑博客,为后续的开发人员提供一些绵薄之 ...
- JAVA 探究NIO
事情的开始 1.4版本开始,java提供了另一套IO系统,称为NIO,(New I/O的意思),NIO支持面向缓冲区的.基于通道的IO操作. 1.7版本的时候,java对NIO系统进行了极大的扩展,增 ...
- Linux framebuffer deferred io机制
一.总体框架 deferred io机制主要用于驱动没有实现自刷新同时应用层又不想调用FBIOPAN_DISPLAY的一个折中方案, 使用ioctrl FBIOPAN_DISPLAY好处是节能, 驱 ...
- kubectl自动补全
source <(kubectl completion bash) echo "source <(kubectl completion bash)" >> ...