MyXLS案例

using System;
using System.Data;
using org.in2bits.MyXls;
namespace Maticsoft.Common
{
    /// <summary>
    /// 操作EXCEL导出数据报表的类
    /// Copyright (C) Maticsoft
    /// </summary>
    public class DataToExcel
    {
        public DataToExcel()
        {
        }

        /// <summary>
        /// 绑定数据库生成XLS报表
        /// using org.in2bits.MyXls;
        /// </summary>
        /// <param name="ds">获取DataSet数据集</param>
        /// <param name="xlsName">报表表名</param>
        public void toExcel(DataTable table, string xlsName)
        {
            XlsDocument xls = new XlsDocument();
            xls.FileName = xlsName + ".xls";
            int rowIndex = 1;
            int colIndex = 0;
            Worksheet sheet = xls.Workbook.Worksheets.Add("Sheet1");
            Cells cells = sheet.Cells;
            foreach (DataColumn col in table.Columns)
            {
                colIndex++;
                cells.Add(1, colIndex, col.ColumnName);
            }

            foreach (DataRow row in table.Rows)
            {
                rowIndex++;
                colIndex = 0;
                foreach (DataColumn col in table.Columns)
                {
                    colIndex++;
                    Cell cell;
                    if (col.DataType == Type.GetType("System.Int32"))
                    {
                        if (Str2Int(row[col.ColumnName].ToString()) != 0)
                        {
                            cell = cells.Add(rowIndex, colIndex, Str2Int(row[col.ColumnName].ToString()));
                        }
                    }
                    else if (col.DataType == Type.GetType("System.Decimal") || col.DataType == Type.GetType("System.Double"))
                    {
                        if (Str2Double(row[col.ColumnName].ToString()) != 0)
                        {
                            cell = cells.Add(rowIndex, colIndex, Str2Double(row[col.ColumnName].ToString()));
                        }
                    }
                    else
                    {
                        if (!row[col.ColumnName].ToString().Equals("1900-01-01"))
                            cell = cells.Add(rowIndex, colIndex, row[col.ColumnName].ToString());
                    }
                }
            }
            xls.Send();
        }

        public DataTable FromExcel(string filepath)
        {
            XlsDocument xls = new XlsDocument(filepath);
            Worksheet sheet = xls.Workbook.Worksheets["Sheet1"];
            DataTable dt = new DataTable();
            DataColumn cl = new DataColumn();
            cl = new DataColumn("ID", System.Type.GetType("System.String"));
            dt.Columns.Add(cl);
            cl = new DataColumn("EID", System.Type.GetType("System.String"));
            dt.Columns.Add(cl);
            cl = new DataColumn("DID", System.Type.GetType("System.String"));
            dt.Columns.Add(cl);
            cl = new DataColumn("Type", System.Type.GetType("System.String"));
            dt.Columns.Add(cl);
            cl = new DataColumn("Model", System.Type.GetType("System.String"));
            dt.Columns.Add(cl);
            cl = new DataColumn("Custodian", System.Type.GetType("System.String"));
            dt.Columns.Add(cl);
            cl = new DataColumn("StorageUnits", System.Type.GetType("System.String"));
            dt.Columns.Add(cl);
            cl = new DataColumn("Money", System.Type.GetType("System.String"));
            dt.Columns.Add(cl);
            cl = new DataColumn("Status", System.Type.GetType("System.String"));
            dt.Columns.Add(cl);
            cl = new DataColumn("BuyTime", System.Type.GetType("System.String"));
            dt.Columns.Add(cl);
            cl = new DataColumn("StorageSites", System.Type.GetType("System.String"));
            dt.Columns.Add(cl);
            cl = new DataColumn("FinancialNumbers", System.Type.GetType("System.String"));
            dt.Columns.Add(cl);
            cl = new DataColumn("Remark", System.Type.GetType("System.String"));
            dt.Columns.Add(cl);
            for (int i = 2; i < sheet.Rows.Count; i++)
            {
                DataRow row = dt.NewRow();
                row[0] = sheet.Rows[ushort.Parse(i.ToString())].GetCell(1).Value;
                row[1] = sheet.Rows[ushort.Parse(i.ToString())].GetCell(2).Value;
                row[2] = sheet.Rows[ushort.Parse(i.ToString())].GetCell(3).Value;
                row[3] = sheet.Rows[ushort.Parse(i.ToString())].GetCell(4).Value;
                row[4] = sheet.Rows[ushort.Parse(i.ToString())].GetCell(5).Value;
                row[5] = sheet.Rows[ushort.Parse(i.ToString())].GetCell(6).Value;
                row[6] = sheet.Rows[ushort.Parse(i.ToString())].GetCell(7).Value;
                row[7] = sheet.Rows[ushort.Parse(i.ToString())].GetCell(8).Value;
                row[8] = sheet.Rows[ushort.Parse(i.ToString())].GetCell(9).Value;
                row[9] = sheet.Rows[ushort.Parse(i.ToString())].GetCell(10).Value;
                row[10] = sheet.Rows[ushort.Parse(i.ToString())].GetCell(11).Value;
                row[11] = sheet.Rows[ushort.Parse(i.ToString())].GetCell(12).Value;
                row[12] = sheet.Rows[ushort.Parse(i.ToString())].GetCell(13).Value;
                dt.Rows.Add(row);
            }
            return dt;
        }

        public double Str2Double(string str)
        {
            double num = 0;
            try
            {
                num = Convert.ToDouble(str);
            }
            catch
            { }
            return num;
        }

        public int Str2Int(string str)
        {
            int num = 0;
            try
            {
                num = Convert.ToInt32(str);
            }
            catch
            { }
            return num;
        }
    }
}
时间: 2024-11-05 18:49:27

MyXLS案例的相关文章

解决 libev.so.4()(64bit) is needed by percona-xtrabackup-2.3.4-1.el6.x86_64案例

在mysql主从同步时经常会用到Xtra, XtraBackup可以说是一个相对完美的免费开源数据备份工具,支持在线无锁表同步复制和可并行高效率的安全备份恢复机制相比mysqldump来说优势较大好处多,在RHEL6中安装XtraBackup时会发生缺少依赖包的现象 本案例针对Xtra缺少依赖包的情况进行安装分析解决 1.本实验环境 [root@master ~]# uname  -r 2.6.32-573.el6.x86_64 [root@master ~]# cat /etc/redhat-

系统内存耗尽的案例分析

近日遇到一个RAC节点hang导致节点被重启的问题,最后经过分析,发现在系统运行一段时间后,系统内存就会耗尽,原本256G的内存,最后只剩几百M. 1. 问题时间段的TOP输出可以看到,内存只剩7G,而分析内存问题,TOP输出是不够的,一般情况下,Database的SGA和PGA是内存使用大户,所以,在TOP很难发现谁是使用内存最多的. 除非某些进程内存使用的格外明显 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Linux OSWbb v7.3.

案例分享:使用员工电脑监控,有什么好处?

下面分享一个真实案例: 北京**科技有限公司梁总想要通过企业员工电脑监控来对员工上网进行管理,通过软件的监控与管理,减少上班与工作无关的上网行为,从而提高员工有效工作效率. 员工工作效率低,上网无节制 梁总发现,最近公司业绩颇有下滑的趋势,于是想要了解员工的详细工作进展,当他在公司时,每一个员工看起来都在忙碌着工作,似乎没什么不妥,但是原因到底是什么呢?难道这只是表面的工作,平时我不在公司,是这样的状态吗?员工会在我离开时,大部分时间在做与工作无关的事,上网聊天?购物? 后来,梁总经朋友介绍,说

OpenFEA应用案例

OpenFEA分析性能卓越,使用简便,自发布以来,即受到大数据分析师的推祟,在各行各业广泛得到应用.    案例一:网络安全态势感知     网络安全态势感知,是基于OpenFEA技术,通过对影响网络安全的资产.漏洞.攻击.异常流量等因素进行大数据分析,使用户宏观.全局的了解网络的安全状况,动态把握特定环境下的网络风险演变过程.从而有效保障网络空间的安全,构筑"防护+监测"的全方位安全保障体系.      案例二:用户异常行为分析     用户异常行为分析(简称UBA),是以OpenF

Android Multimedia框架总结(十四)Camera框架初识及自定义相机案例

转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52738492 前言:国庆节告一段落,又是新一月,上月主要是围绕MediaPlayer相关展开,从今天开始,开始分析多媒体框架中的Camera模块,看下今天的Agenda: Camera拍照 Camera录像 新API android.hardware.camera2 新旧API特点对比 Camera自定义相机 新API andro

Ext.js入门:常用组件与综合案例(七)

一:datefield简单示例 二:timefield简单示例 三:numberfield简单示例 四:FormPanel提交 datefield简单示例: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <link href="Ext/resources/css/ext-all.css&

linux入门之grep 正则表达式案例

grep 正则表达式案例 案例一: 1.显示/proc/meminfo文件中以大小s开头的行:(要求:使用两种方式) #grep -i '^s' /proc/meminfo #grep  '^[Ss]' /proc/meminfo #grep -E '^(s|S)' /proc/meinfo 2.显示/etc/passwd文件中不以/bin/bash结尾的行 #grep -v '/bin/bash$' /etc/passwd 3.显示用户rpc默认的shell程序 #grep '^\<rpc\>

3、Spring的AOP详解和案例

AOP(Aspect Oriented Programming),即面向切面编程. 1.OOP回顾 在介绍AOP之前先来回顾一下大家都比较熟悉的OOP(Object Oriented Programming).OOP主要是为了实现编程的重用性.灵活性和扩展性.它的几个特征分别是继承.封装.多态和抽象.OOP重点体现在编程架构,强调的是类之间的层次关系. 2.OOP缺陷 为了更好的说明OOP的概念,我们接下来讲一个OOP的实例,重点分析OOP存在哪些缺陷,以便更好的理解AOP的相关内容. 先看如下

HTTP协议:(3)HTTP响应和相关API、案例

1.HTTP响应的知识 1.1.HTTP响应的示例 HTTP响应由四部分组成:响应行.响应头.一个空行和实体内容. HTTP响应的组成: |--响应行 |--响应头 |--(一个空行) |--实体内容 HTTP响应示例:     HTTP/1.1 200 OK                --响应行     Server: Apache-Coyote/1.1      --响应头(key-vaule)     Content-Length: 24     Date: Fri, 30 Jan 2