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. JSON多层数据添加与访问

    最近项目中有要用到,JSON的多层数据对象,相当是一个json格式数组里面嵌套一个json对象吧,至于我为什么要用到这个呢,引入业务场景: 两组数据   1:    user_id    user_h ...

  2. error:stray&#39;\243&#39;in program

    error:stray'\243'in program 问题:       C原因在编译时出现例如以下错误 error:stray'\243'in program 错误原因: 非 - 标准ascII字 ...

  3. CocoaPods 建立私有仓库

    CocoaPods是iOS,Mac下优秀的第三方包管理工具,类似于java的maven,给我们项目管理带来了极大的方便. [个人或公司在开发过程中,会积累很多可以复用的代码包,有些我们不想开源,又想像 ...

  4. MVC EF 修改 封装类 通用泛型方法(一)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  5. php设计模式(一):简介及创建型模式

    我们分三篇文章来总结一下设计模式在PHP中的应用,这是第一篇创建型模式. 一.设计模式简介 首先我们来认识一下什么是设计模式: 设计模式是一套被反复使用.容易被他人理解的.可靠的代码设计经验的总结. ...

  6. vim跳转

    w 跳到下一个单词的开始 e 跳到单词的结束 b 向后跳 gg 跳到文件的开始 G 跳到文件的结束 10gg 或10G 跳到第10行 ta 跳到下一个a 前面 fa 跳到下一个a 大写的意思相反 另外 ...

  7. 10个实用的PHP正则表达式汇总

    原文 10个实用的PHP正则表达式汇总 正则表达式是程序开发中一个重要的元素,它提供用来描述或匹配文本的字符串,如特定的字符.词或算式等.但在某些情况下,用正则表达式去验证一个字符串比较复杂和费时.本 ...

  8. POJ 3255 Roadblocks (次级短路问题)

    解决方案有许多美丽的地方.让我们跳回到到达终点跳回(例如有两点)....无论如何,这不是最短路,但它并不重要.算法能给出正确的结果 思考:而最短的路到同一点例程.spfa先正达恳求一次,求的最短路径的 ...

  9. 【翻译自mos文章】SYS_OP_C2C 导致的全表扫描(fts)/全索引扫描

    SYS_OP_C2C 导致的全表扫描(fts)/全索引扫描 參考原文: SYS_OP_C2C Causing Full Table/Index Scans (Doc ID 732666.1) 适用于: ...

  10. JS子元素oumouseover触发父元素onmouseout

    原文:JS子元素oumouseover触发父元素onmouseout JavaScript中,父元素包含子元素: 当父级设置onmouseover及onmouseout时,鼠标从父级移入子级,则触发父 ...