使用 Aspose.Cells 实现 excel导入
- 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导入的更多相关文章
- 报表中的Excel操作之Aspose.Cells(Excel模板)
原文:报表中的Excel操作之Aspose.Cells(Excel模板) 本篇中将简单记录下Aspose.Cells这个强大的Excel操作组件.这个组件的强大之处,就不多说,对于我们的报表总是会有导 ...
- Aspose.Cells导出Excel(1)
利用Aspose.Cells导出excel 注意的问题 1.DataTable的处理 2.进行编码,便于中文名文件下载 3.别忘了Aspose.Cells.dll(可以自己在网上搜索) public ...
- 使用Aspose.Cells读取Excel
最新更新请访问: http://denghejun.github.io Aspose.Cells读取Excel非常方便,以下是一个简单的实现读取和导出Excel的操作类: 以下是Aspose.Ce ...
- 怎么使用Aspose.Cells读取excel 转化为Datatable
说明:vs2012 asp.net mvc4 c# 使用Aspose.Cells 读取Excel 转化为Datatable 1.HTML前端代码 <%@ Page Language=" ...
- 怎么利用Aspose.Cells 获取excel 数据表中sheet的名称
说明:开发环境 vs2012 asp.net mvc4 c# 利用Aspose.Cells 获取Excel数据表的sheet的名称,并把获取的名称赋值给easyUI 的combobox 1.运行效果 ...
- Aspose.cells 读取Excel表中的图片问题
一.说明 本文主要是讲解,怎么使用aspose.cells读取Excel表中的图片,并把图片转换成流或是image对象. 二.开发环境说明 开发工具vs2012,c#语言, 三.Aspose.cell ...
- C# WinForm使用Aspose.Cells.dll 导出导入Excel/Doc 完整实例教程
1.添加引用: Aspose.Cells.dll(我们就叫工具包吧,可以从网上下载.关于它的操作我在“Aspose.Cells操作说明 中文版 下载 Aspose C# 导出Excel 实例”一文中的 ...
- Aspose.Cells.dll引用导入导出Excel
Aspose.Cells 导入导出EXCEL 文章出处:http://hi.baidu.com/leilongbing/item/c11467e1819e5417595dd8c1 修改样式 ...
- 基于 Aspose.Cells与XML导入excel 数据----操作类封装
前言 导入excel数据, 在每个项目中基本上都会遇到,第三方插件或者基于微软office,用的最多的就是npoi,aspose.cells和c#基于office这三种方式,其中各有各的优缺点,在这也 ...
随机推荐
- Leetcode:unique_binary_search_trees
一. 称号 给定的数目n.问:有多少种不同BST(二叉搜索树) 比如: 因为N =3,共同拥有5种独特的BST. 1 3 3 2 1 \ ...
- ios结构体httpPost头结构
ios结构体httpPost头结构 by 吴雪莹 NSString* urlStr = @"; NSURL* url = [NSURL URLWithString:urlStr]; NSMu ...
- LeetCode:same_tree题解
一. 题目: 给定两个二叉树,编写一个函数来检查它们是否相等或为空树.假设两个二叉树被觉得是相等的,那么它们在结构上是同样的,而且随意节点具有同样的值. 二. 分析 非常easy的题目 ...
- javascript中类的属性研究
原文:javascript中类的属性研究 本篇文章主要针对javascript的属性进行分析,由于javascript是一种基于对象的语言,本身没有类的概念,所以对于javascript的类的定义有很 ...
- Winform中node.Text重命名时窗口无响应假死的解决方法
用户控件中有一个树,窗体使用了这个控件,但是重命名时执行node.text="XXXX" 执行了很长时间,大约9s,在此期间winform界面假死,尝试过多线程异步委托的方式来操作 ...
- 深入理解C指针之五:指针和字符串
原文:深入理解C指针之五:指针和字符串 基础概念 字符串可以分配到内存的不同区域,通常使用指针来支持字符串操作.字符串是以ASCII字符NUL结尾的字符序列.ASCII字符NUL表示为\0.字符串通常 ...
- MVC创建XML,并实现增删改
原文:MVC创建XML,并实现增删改 如果创建如下的XML: <?xml version="1.0" encoding="utf-8" standalon ...
- 一步一步写算法(之prim算法 上)
原文:一步一步写算法(之prim算法 上) [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 前面我们讨论了图的创建.添加.删除和保存等问题.今 ...
- Yii2中如何使用CodeCeption
Yii2和CodeCeption CodeCeption是一个全栈的PHP测试框架,关于CodeCeption的介绍见:CodeCeption官方文档. Yii2官方增加了对CodeCeption的支 ...
- YUV格式转换RGB(基于opencv)
在编写代码将需要处理YUV格从每个视频帧中提取,然后将其保存为图片.有两种常见的方法在线,第一种是通过opencv自带cvCvtColor,可是这样的方法有bug.得到的图片会泛白.另外一种方法是公式 ...