using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Data;
using System.Diagnostics;
using Aspose.Cells;
public partial class P_BrieFing_BrieFingExcelExport_MSLL : System.Web.UI.Page
{
protected string PID = string.Empty;//工程主键
protected string XM_ID = string.Empty;//监测项目编号
protected void Page_Load(object sender, EventArgs e)
{
GetUrlRequest();
GetInfo();
}
#region 获得URL中的参数
protected void GetUrlRequest()
{
PID = Request.QueryString["PID"];
XM_ID = Request.QueryString["XM_ID"];
}
#endregion #region 得到监测的工程基本数据数据
protected void GetInfo()
{
P_PROJECT bll = new P_PROJECT();
P_PROJECTInfo ProjectModel = bll.GetModelById(PID);
string Test_Orgcode = MyCommon.GetEnterpriseCodeByID(ProjectModel.E_ENTERPRISEID);//获取当前工程 监测机构用户编号
string PROJECT_NUM = ProjectModel.CODE;//项目编号
string ProName = ProjectModel.NAME;//项目名称
string ProAddress = ProjectModel.ADDRESS;//项目地址 List<DBParameter> paras = new List<DBParameter>();
paras.Add(new OracleDBParameter("p_Projectid", PID));
paras.Add(new OracleDBParameter("XM_ID", XM_ID));
P_ITEM ITemBll = new P_ITEM();
var ITEMModel = ITemBll.GetModel(paras, ""); E_DEVICE DeviceBll = new E_DEVICE();
E_DEVICEInfo entity = DeviceBll.GetModel(ITEMModel.E_DEVICEID);
string XMJCYQ = "";
if (entity != null)
{
XMJCYQ = entity.NAME;//项目监测仪器
}
SetExcelData(ProName, ProAddress, XMJCYQ, PROJECT_NUM);
} #endregion #region 往Excel写入数据
protected void SetExcelData(string ProName, string Address, string JCYQ, string PROJECT_NUM)
{ Workbook SourceBook1 = new Workbook();
string TempatPath = Server.MapPath("~/ExcelTemplate/锚索拉力模板.xls"); XM_YL_F bllYL = new XM_YL_F();
DataTable dtFromDB = bllYL.GetDataTableByProjectNum(PROJECT_NUM);//从数据库中读取数据
//for (int j = 0; j < dtFromDB.Rows.Count;j++)
//{
// string result = Convert.ToString(dtFromDB.Rows[j]["result"]);
// string[] arrs = result.Split(',');//获得一条数据
//}
int JCAmount = ;
if (dtFromDB.Rows.Count > )
{
JCAmount = Convert.ToString(dtFromDB.Rows[]["result"]).Split(',').Length + ;//获得监测次数 数据result是从第二次获得的 因此+1
}
List<string> fileList = new List<string>(); double TableAmount = Math.Ceiling(Convert.ToDouble(JCAmount) / );//获得多少个Excel int JCDAmount = dtFromDB.Rows.Count;//有几个监测点 就有几行
#region 如果存在数据
if (TableAmount > )
{
for (int k = ; k < TableAmount; k++)//循环生成Excel
{ Workbook tempBook = new Workbook(); //创建设计模板对象,并绑定数据源
WorkbookDesigner designer = new WorkbookDesigner(); #region 给第X次赋值
designer.Open(TempatPath);
int jc1 = k * + ;
if (k == )
{
designer.SetDataSource("CS1", "第1次");
}
else
{
designer.SetDataSource("FCS", "上次累计(m)");
designer.SetDataSource("CS1", "第" + (jc1) + "次");
} int jc2 = k * + ;//如果是第二页 jc2=5
int jc2N = jc2 + ;
designer.SetDataSource("CS2", "第" + jc2N + "次"); int jc3 = k * + ;
int jc3N = jc3 + ;
designer.SetDataSource("CS3", "第" + jc3N + "次"); int jc4 = k * + ;
int jc4N = jc4 + ;
designer.SetDataSource("CS4", "第" + jc4N + "次"); int jc5 = k * + ;
int jc5N = jc5 + ;
designer.SetDataSource("CS5", "第" + jc5N + "次"); #endregion DataTable datatable = new DataTable();
datatable = CreateTable("CD,CS,Num1,Num2,Num3,Num4,Num5,Num6,,Num7,Num8,Num9,Num10,Num11,Num12,Num13,Num14,Num15", "JK"); #region 循环取出数据
for (int i = ; i < JCDAmount; i++)
{
DataRow row = datatable.NewRow(); string result = Convert.ToString(dtFromDB.Rows[i]["result"]); row["CD"] = Convert.ToString(dtFromDB.Rows[i]["SY_Num"]);//测点
if (k != )//如果不是第一页 则需要去上一页中的累计值
{
int LastLJ = k * - ;//第6条数据 应该是第5条数据 而第一天数据是空的 因此-2
row["CS"] = result.Split(',')[LastLJ].Split('@')[];
}
else
{
row["CS"] = Convert.ToString(dtFromDB.Rows[i]["F0"]);//初始数据
} if (k == )
{
row["Num1"] = "";
row["Num2"] = "";
row["Num3"] = "";//第一次数据 水平位移为0 }
else
{
if (jc1 <= JCAmount - )
{//如果是1111.0则用"/"替换
row["Num1"] = result.Split(',')[jc1].Split('@')[] == "1111.0" ? "/" : result.Split(',')[jc1].Split('@')[];
row["Num2"] = result.Split(',')[jc1].Split('@')[] == "1111.0" ? "/" : result.Split(',')[jc1].Split('@')[];
row["Num3"] = result.Split(',')[jc1].Split('@')[] == "1111.0" ? "/" : result.Split(',')[jc1].Split('@')[];
}
else
{
row["Num1"] = "/";
row["Num2"] = "/";
row["Num3"] = "/";
}
} if (jc2 <= JCAmount - )//如果有6条数据 第二页第二条数据5 是不存在的
{
row["Num4"] = result.Split(',')[jc2].Split('@')[] == "1111.0" ? "/" : result.Split(',')[jc2].Split('@')[]; //如果数据是1111.0 则替换为/
row["Num5"] = result.Split(',')[jc2].Split('@')[] == "1111.0" ? "/" : result.Split(',')[jc2].Split('@')[];
row["Num6"] = result.Split(',')[jc2].Split('@')[] == "1111.0" ? "/" : result.Split(',')[jc2].Split('@')[];
}
else
{
row["Num4"] = "/";
row["Num5"] = "/";
row["Num6"] = "/";
} if (jc3 <= JCAmount - )
{
row["Num7"] = result.Split(',')[jc3].Split('@')[] == "1111.0" ? "/" : result.Split(',')[jc3].Split('@')[];
row["Num8"] = result.Split(',')[jc3].Split('@')[] == "1111.0" ? "/" : result.Split(',')[jc3].Split('@')[];
row["Num9"] = result.Split(',')[jc3].Split('@')[] == "1111.0" ? "/" : result.Split(',')[jc3].Split('@')[];
}
else
{
row["Num7"] = "/";
row["Num8"] = "/";
row["Num9"] = "/";
} if (jc4 <= JCAmount - )
{
row["Num10"] = result.Split(',')[jc4].Split('@')[] == "1111.0" ? "/" : result.Split(',')[jc4].Split('@')[];
row["Num11"] = result.Split(',')[jc4].Split('@')[] == "1111.0" ? "/" : result.Split(',')[jc4].Split('@')[];
row["Num12"] = result.Split(',')[jc4].Split('@')[] == "1111.0" ? "/" : result.Split(',')[jc4].Split('@')[];
}
else
{
row["Num10"] = "/";
row["Num11"] = "/";
row["Num12"] = "/";
} if (jc4 <= JCAmount - )
{
row["Num13"] = result.Split(',')[jc5].Split('@')[] == "1111.0" ? "/" : result.Split(',')[jc5].Split('@')[];
row["Num14"] = result.Split(',')[jc5].Split('@')[] == "1111.0" ? "/" : result.Split(',')[jc5].Split('@')[];
row["Num15"] = result.Split(',')[jc5].Split('@')[] == "1111.0" ? "/" : result.Split(',')[jc5].Split('@')[];
}
else
{
row["Num13"] = "/"; ;
row["Num14"] = "/"; ;
row["Num15"] = "/";
} datatable.Rows.Add(row);
}
#endregion designer.SetDataSource("Title", "表7-" + Convert.ToInt32(k + ) + " 基坑锚索拉力监测结果表");
designer.SetDataSource("ProName", ProName);
designer.SetDataSource("Paddress", Address);
designer.SetDataSource("PYQ", JCYQ);
designer.SetDataSource("PGF", "《广州市地区建筑基坑支护技术规定》(GJB 02-98)"); designer.SetDataSource(datatable);
designer.Process(); //修改Sheet的名称
designer.Workbook.Worksheets[].Name = "test" + k.ToString(); #region 合并根据数据源和自定义模板,生成相应的报表Excel文件
string tt = string.Format("Combind{0}.xls", k + DateTime.Now.ToString("yyyyMMddhhmmss"));
string fileToSave = Server.MapPath(tt);
designer.Save(fileToSave);
fileList.Add(fileToSave); //第一次要打开
if (k == )
{
SourceBook1.Open(fileToSave);
}
else
{
//第二个使用Combind函数操作
tempBook.Open(fileToSave);
SourceBook1.Combine(tempBook);
}
#endregion
} string FileName = "基坑锚索拉力监测结果表" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls";
string soucePath = @"D:\JKJC\" + FileName;
SourceBook1.Save(soucePath); //删除临时文件
foreach (string file in fileList)
{
if (File.Exists(file))
{
File.Delete(file);
}
}
//Process.Start(soucePath);
DownloadHelper.DownloadFile(soucePath, FileName);
}
#endregion
else
{
#region 如果没有数据
WorkbookDesigner designer = new WorkbookDesigner();
designer.Open(TempatPath); designer.SetDataSource("Title", "表7-1基坑支撑轴力监测结果表");
designer.SetDataSource("ProName", ProName);
designer.SetDataSource("Paddress", Address);
designer.SetDataSource("PYQ", JCYQ);
designer.SetDataSource("PGF", "《广州市地区建筑基坑支护技术规定》(GJB 02-98)"); DataTable datatable = this.CreateTable("CD,CS,Num1,Num2,Num3,Num4,Num5,Num6,,Num7,Num8,Num9,Num10,Num11,Num12,Num13,Num14,Num15", "JK");
designer.SetDataSource("CS1", "第1次");
designer.SetDataSource("CS2", "第2次");
designer.SetDataSource("CS3", "第3次");
designer.SetDataSource("CS4", "第4次");
designer.SetDataSource("CS5", "第4次");
DataRow row = datatable.NewRow(); row["CD"] = "/";
row["CS"] = "/";
row["Num1"] = "/";
row["Num2"] = "/";
row["Num3"] = "/";
row["Num4"] = "/";
row["Num5"] = "/";
row["Num6"] = "/";
row["Num7"] = "/";
row["Num8"] = "/";
row["Num9"] = "/";
row["Num10"] = "/";
row["Num11"] = "/";
row["Num12"] = "/";
row["Num13"] = "/";
row["Num14"] = "/";
row["Num15"] = "/";
datatable.Rows.Add(row); designer.SetDataSource(datatable);
designer.Process(); string FileName = "基坑锚索拉力监测结果表" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls";
string path = @"D:\JKJC\" + FileName;
if (File.Exists(path))
{
File.Delete(path);
}
designer.Save(path, FileFormatType.Default);
//Process.Start(path);
#endregion
DownloadHelper.DownloadFile(path, FileName); }
}
#endregion #region 创建Table
public DataTable CreateTable(string nameString, string tableName)
{
string[] strArray = nameString.Split(new char[] { ',', ';' });
List<string> nameList = new List<string>();
foreach (string str in strArray)
{
if (!string.IsNullOrEmpty(str))
{
nameList.Add(str);
}
}
return this.CreateTable(nameList, tableName);
} public DataTable CreateTable(List<string> nameList, string tableName)
{
if (nameList.Count <= )
{
return null;
}
DataTable table = new DataTable(tableName);
foreach (string str in nameList)
{
DataColumn column = new DataColumn
{
DataType = Type.GetType("System.String"),
ColumnName = str
};
table.Columns.Add(column);
}
return table;
}
#endregion
}

使用 Aspose.Cells 实现 excel导入的更多相关文章

  1. 报表中的Excel操作之Aspose.Cells(Excel模板)

    原文:报表中的Excel操作之Aspose.Cells(Excel模板) 本篇中将简单记录下Aspose.Cells这个强大的Excel操作组件.这个组件的强大之处,就不多说,对于我们的报表总是会有导 ...

  2. Aspose.Cells导出Excel(1)

    利用Aspose.Cells导出excel 注意的问题 1.DataTable的处理 2.进行编码,便于中文名文件下载 3.别忘了Aspose.Cells.dll(可以自己在网上搜索) public ...

  3. 使用Aspose.Cells读取Excel

      最新更新请访问: http://denghejun.github.io Aspose.Cells读取Excel非常方便,以下是一个简单的实现读取和导出Excel的操作类: 以下是Aspose.Ce ...

  4. 怎么使用Aspose.Cells读取excel 转化为Datatable

    说明:vs2012 asp.net mvc4 c# 使用Aspose.Cells 读取Excel 转化为Datatable 1.HTML前端代码 <%@ Page Language=" ...

  5. 怎么利用Aspose.Cells 获取excel 数据表中sheet的名称

    说明:开发环境 vs2012 asp.net mvc4 c# 利用Aspose.Cells 获取Excel数据表的sheet的名称,并把获取的名称赋值给easyUI 的combobox 1.运行效果 ...

  6. Aspose.cells 读取Excel表中的图片问题

    一.说明 本文主要是讲解,怎么使用aspose.cells读取Excel表中的图片,并把图片转换成流或是image对象. 二.开发环境说明 开发工具vs2012,c#语言, 三.Aspose.cell ...

  7. C# WinForm使用Aspose.Cells.dll 导出导入Excel/Doc 完整实例教程

    1.添加引用: Aspose.Cells.dll(我们就叫工具包吧,可以从网上下载.关于它的操作我在“Aspose.Cells操作说明 中文版 下载 Aspose C# 导出Excel 实例”一文中的 ...

  8. Aspose.Cells.dll引用导入导出Excel

    Aspose.Cells 导入导出EXCEL 文章出处:http://hi.baidu.com/leilongbing/item/c11467e1819e5417595dd8c1 修改样式       ...

  9. 基于 Aspose.Cells与XML导入excel 数据----操作类封装

    前言 导入excel数据, 在每个项目中基本上都会遇到,第三方插件或者基于微软office,用的最多的就是npoi,aspose.cells和c#基于office这三种方式,其中各有各的优缺点,在这也 ...

随机推荐

  1. Objective-C马路成魔【12-分类和协议】

    郝萌主倾心贡献.尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助.欢迎给作者捐赠,支持郝萌主.捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 分类与协议 ...

  2. CSDN专家吐槽实录

    今天打开CSDN发现界面上的几个图标发生了变化,一个小小的变化,却引起了诸多CSDN专家对CSDN社区未来发展的思考,我特意从群里讲对话黏贴出来,希望各位能给予积极评价和建议. 你已经是群成员了,和大 ...

  3. Swift语言指南(三)--语言基础之整数和浮点数

    原文:Swift语言指南(三)--语言基础之整数和浮点数 整数 整数指没有小数的整数,如42,-23.整数可以是有符号的(正数,零,负数),也可以是无符号的(正数,零). Swift提供了8,16,3 ...

  4. cocos2d-x 3.2 2048——第六部分(最后一章)

    ***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...

  5. BAT 特殊符号总结

    原文:BAT 特殊符号总结 BAT特殊符号总结,用好特殊符号,利用提高开发效率.^ 转义符 用在特殊符号之前 比如: echo 非常^&批处理 如果不加^ 那么"批处理"将 ...

  6. NSNotification、delegate和KVO的区别

    1.效率:delegate比nsnotification高.2. delegate方法比notification更加直接,最典型的特征是,delegate方法往往需要关注返回值, 也就是delegat ...

  7. 高速掌握sinox2014激动人心的ZFS和RAID技术

    Sinox2014引入激动人心的zfs系统以及其支持的RAID,让用户高速打造便宜的高可靠性文件server. ZFS文件系统的英文名称为Zettabyte File System,也叫动态文件系统( ...

  8. JS模块与命名空间的介绍二

    区别一:

  9. 安卓MonkeyRunner源码分析之启动

    在工作中因为要追求完成目标的效率,所以更多是强调实战,注重招式,关注怎么去用各种框架来实现目的.但是如果一味只是注重招式,缺少对原理这个内功的了解,相信自己很难对各种框架有更深入的理解. 从几个月前开 ...

  10. linux 定时关机命令

    一. 关机流程 Linux 运作时, 不能够直接将电源关闭, 否则, 可能会损毁档案系统. 因此, 必须依照正常的程序关机: 观察系统使用情形(或许当时, 正有使用者做着重要的工作呢!) 通知线上使用 ...