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. XCL-Charts绘画面积图(AreaChart) 案件1

    样本区域地图,发现区域图的时候把做向上注视位置图更具优势的管理. 在改变. 区域图网格和轴是不一样的处理与其它图, 它是用来表示其影响范围的覆盖范围,车桥无段伸出.在这里下处理. 代码: /** * ...

  2. oracle_体系结构图_逻辑结构图

    1.oracle 的体系结构图  重要!!! 2.oracle的逻辑结构图

  3. 使用ArcGIS API for Silverlight 进行复合多条件空间查询

    原文:使用ArcGIS API for Silverlight 进行复合多条件空间查询 这两天帮网上认识的一个兄弟做了一个查询的示例,多多少少总结一下,在此和大家分享. 为什么说是复合多条件呢?因为进 ...

  4. Jquery()核心函数的7个重载方法

    (1) jquery() 该函数返回一个空的jQuery对象.在jQuery1.4以后的版本中,改函数返回一个空的jQuery对象.在之后的版本中,该函数会返回一个包含document节点的对象. ( ...

  5. 修改 dll

    由于没有源码,想改dll,就要依靠反汇编了. 输入 ildasm.exe 据说也可以直接 C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin 找到该软件 ...

  6. MySQL的备份与还原

    原文:MySQL的备份与还原 MySQL备份和还原,都是利用mysqldump.mysql和source命令来完成的. 1.Win32下MySQL的备份与还原 1.1 备份 开始菜单 | 运行 | c ...

  7. Appium根据xpath获取控件实例随笔

    如文章<Appium基于安卓的各种FindElement的控件定位方法实践>所述,Appium拥有众多获取控件的方法.其中一种就是根据控件所在页面的XPATH来定位控件. 本文就是尝试通过 ...

  8. Model和Entity Framework

    Model和Entity Framework 上一节:ASP.NET MVC 5 入门教程 (4) View和ViewBag 下一节:ASP.NET MVC5 + EF6 入门教程 (6) View中 ...

  9. 在weblogic11g发布该项目时遇到错误(不支持web-app_3_0)

    problem: cvc-enumeration-valid: string value '3.0' is not a valid enumeration value for web-app-vers ...

  10. uva 11991 - Easy Problem from Rujia Liu?(STL)

    option=com_onlinejudge&Itemid=8&page=show_problem&problem=3142" target="_blank ...