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 ...
随机推荐
- 【译】在C#中实现单例模式
目录 介绍 第一个版本 --不是线程安全的 第二个版本 -- 简单的线程安全 第三个版本 - 使用双重检查锁定尝试线程安全 第四个版本 - 不太懒,不使用锁且线程安全 第五版 - 完全懒惰的实例化 第 ...
- 文本输入框input text输入字母自动转大写
现在需要把一个input输入框内的字母自动转变为大写. 查了下资料,目前收集到的方法有两种: 使用JavaScript,在input标签添加onkeyup方法,将字符转为大写. <input n ...
- 企业微信快捷接入Odoo的模块——WeOdoo
WeOdoo Odoo 快速接入企业微信,快捷使用,基于Oauth2.0安全认证协议,免对接开发配置,支持局域网等内网环境的 Odoo 服务 详见: http://oejia.net/blog/201 ...
- 还在用NuGet吗?大哥FuGet了解一下
前言 你可能不知道是,NuGet已经发布10年了,从 Visual Studio 2010 第一次官方集成NuGet以来,这10年间有聚集了超过 14万 的包,这些包有超过 150万 的版本提供,大约 ...
- MonacoEditor 主动触发代码提示功能
MonacoEditor是微软提供的代码编辑器 vscode即是使用它作为编辑器. 它的开发语言是ts,可以嵌入到浏览器中. 代码提示或者说代码补全功能是我们经常需要定制的部分. 目前它提供的快捷键是 ...
- PHP全栈学习笔记7
图形图像处理技术,gd库的强大支持,PHP的图像可以是PHP的强项,PHP图形化类库,jpgraph是一款非常好用的强大的图形处理工具. 在PHP中加载GD库 gd官方网址下载: http://www ...
- markdown实战问题备忘
问题一:怎么把文档标题放在中间呢? 下面这个能解决问题. 居中: <center>诶嘿</center> 左对齐: <p align="left"&g ...
- javascript 实现数据结构 - 栈
栈是一种遵从后进先出(LIFO)原则的有序集合.新添加的或待删除的元素都保存在栈的同一端,称作栈顶,另一端就叫栈底.在栈里,新元素都靠近栈顶,旧元素都接近栈底.栈就好像是一个底部密封的盒子,我们往里面 ...
- [翻译]Java排错指南 - 5 确定崩溃何地发生
原文地址: https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/crashes001.html 这几天公司其他组遇到 ...
- 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之七 || API项目整体搭建 6.2 轻量级ORM
更新 1.在使用的时候,特别是更新数据的时候,如果不知道哪里有问题,可以查看数据库 和 实体类 的字段,是否大小写一致,比如 name 和 Name 2.在使用Sqlsugar 的 CodeFirst ...