基于asp.net的excel导入导出
新建aspx文件、代码大概如下:
<!--导入Excel文件-->
                <table width="99%" border="0" align="center" cellpadding="0" id="searchtable" cellspacing="0" bgcolor="#CCCCCC">
                    <tr>
                        <td bgcolor="#FFFFFF">
                            <table width="100%" border="0" cellpadding="2" cellspacing="1" bgcolor="#CCCCCC"
                                class="table">
                                <tr class="table-item">
                                    <td width="12%" height="20" bgcolor="#E7E7E7" align="center">
                                        <asp:Button ID="btn_ExportReceivable" Text="导出Excel" OnClick="btn_excel_Click1" runat="server"/>
                                    </td>
                                    <td width="48%" bgcolor="#FFFFFF">
                                        <input id="fileExportExcelReceivable" style="width:100%" type="file"  runat="server"/>
                                    </td>
                                    <td width="10%" bgcolor="#E7E7E7" align="center">
                                        <asp:Button ID="btn_excelReceivable"  Visible="true" Text="导入Excel" OnClick="btn_excel_Click2" runat="server"/>
                                    </td>
                                </tr>
                            </table>
                        </td>
                    </tr>
                </table>
 <!--导入结束-->
                 aspx.cs中代码如下:
using NPOI.HSSF.UserModel;
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using XBase.Model.Office.PurchaseManager;
using XBase.Common;
using XBase.Business.Office.PurchaseManager;
using System.Collections.Generic;
using System.Data.OleDb;
using System.IO;
using System.Data; 
public partial class Pages_Office_FinanceManager_ReceivablePayable : System.Web.UI.Page
{
    HSSFWorkbook hssfworkbook; 
    protected void Page_Load(object sender, EventArgs e)
    {
    }
    /// <summary>
    ///
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btn_excel_Click1(object sender, EventArgs e)
    {
        XBase.Model.Office.SellReport.AccountsRP AccountsRP = new XBase.Model.Office.SellReport.AccountsRP();
        DataTable dt = XBase.Business.Office.PurchaseManager.PurchaseOrderBus.GetAccountsRP();
        OutputToExecl.ExportToTableFormat(this, dt,
            new string[] { "订单编号", "类型", "供应商", "发票号", "应付金额", "已付金额", "付款金额" },
            new string[] { "SalesOrderNo", "type", "CustName", "InvoiceNum", "ComSendMoney", "ReceivedPrepaid", "fk" }, "应付报表");
    }
    protected void btn_excel_Click2(object sender, EventArgs e)
    {
        string strcompanycd = ((UserInfoUtil)SessionUtil.Session["UserInfo"]).CompanyCD;
        string struid = ((UserInfoUtil)SessionUtil.Session["UserInfo"]).EmployeeNum;
        try
        {
            /*文件名*/
            string FileName = string.Empty;
            /*上传后完整的文件路径包含文件名*/
            string FileNewUrl = string.Empty;  
            #region 上传验证
            /*获取公司的上传路径*/
            string FileUrl = XBase.Business.Office.SupplyChain.ProductInfoBus.GetCompanyUpFilePath(strcompanycd);
            /*验证该公司路径是否存在 不存在则创建*/
            DirectoryInfo dir = new DirectoryInfo(FileUrl);
            if (!dir.Exists)
            {
                try
                {
                    dir.Create();
                }
                catch (Exception ex)
                {
                    this.lbl_resultReceivable.Text = ex.ToString();
                    return;
                }
            }
            /*验证是否选择了文件*/
            if (string.IsNullOrEmpty(fileExportExcelReceivable.PostedFile.FileName))
            {
                this.lbl_resultReceivable.Text = "请选择需要导入的Excel文件";
                return;
            }
            /*验证文件类型*/
            string FileExtension = fileExportExcelReceivable.PostedFile.FileName.Split('.')[1].ToUpper();
            if (FileExtension != "XLS" && FileExtension != "XLSX")
                ErrorMsg += "文件错误,请上传正确的Excel文件\\n";
            /*判断是否存在异常*/
            if (!string.IsNullOrEmpty(ErrorMsg))
            {
                this.lbl_resultReceivable.Text = ErrorMsg;
                return;
            }
            /*上传文件*/
            string strID = Guid.NewGuid().ToString();
            FileName = strID + "." + FileExtension.ToLower();
            FileNewUrl = FileUrl + "\\" + FileName;
            try
            {
                fileExportExcelReceivable.PostedFile.SaveAs(FileNewUrl);
            }
            catch (Exception ex)
            {
                this.lbl_resultReceivable.Text = ex.ToString();
            }
            #endregion
            DataSet ds = ToDataTable(FileNewUrl);
            foreach (DataRow dr in ds.Tables["应付报表$"].Rows)
            {
                try
                {
                    string[] listADD = new string[1];
                    string order = dr[0].ToString();
                    int money = int.Parse(dr[6].ToString());
                    string sql = @"UPDATE officedba.AccountsRP SET	ReceivedPrepaid = (SELECT ReceivedPrepaid+" + money + " FROM officedba.AccountsRP where SalesOrderNo='" + order + "') WHERE SalesOrderNo='" + order + "'";
                    listADD[0] = sql;
                    XBase.Business.Office.SellManager.SellSendBus.UpdatestrSql(listADD);
                }
                catch (Exception ex)
                {
                    continue;
                }
            }
        }
        catch (Exception ex)
        {
            this.lbl_resultReceivable.Text = "导入失败" + ex.ToString();
            return;
        }
    }
    public static DataSet ToDataTable(string filePath)
    {
        string connStr = "";
        string fileType = System.IO.Path.GetExtension(filePath);
        if (string.IsNullOrEmpty(fileType)) return null;
        if (fileType == ".xls")
            connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filePath + ";" + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";
        else
            connStr = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + filePath + ";" + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\"";
        string sql_F = "Select * FROM [{0}]";
        OleDbConnection conn = null;
        OleDbDataAdapter da = null;
        DataTable dtSheetName = null;
        DataSet ds = new DataSet();
        try
        {
            // 初始化连接,并打开
            conn = new OleDbConnection(connStr);
            conn.Open();
            // 获取数据源的表定义元数据                        
            string SheetName = "";
            dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
            // 初始化适配器
            da = new OleDbDataAdapter();
            for (int i = 0; i < dtSheetName.Rows.Count; i++)
            {
                SheetName = (string)dtSheetName.Rows[i]["TABLE_NAME"];
                if (!SheetName.Contains("$") && !SheetName.Replace("'", "").EndsWith("$"))
                {
                    continue;
                }
                //sql_F = "Select * FROM [{0}] ";
                if (SheetName.Contains("应付报表$"))
                {
                    sql_F = "Select * FROM [{0}] where F3 <> '' and F6 <> '已付金额'  ";
                }
                da.SelectCommand = new OleDbCommand(String.Format(sql_F, SheetName), conn);
                DataSet dsItem = new DataSet();
                da.Fill(dsItem, SheetName);
                ds.Tables.Add(dsItem.Tables[0].Copy());
            }
        }
        catch (Exception ex)
        {
        }
        finally
        {
            // 关闭连接
            if (conn.State == ConnectionState.Open)
            {
                conn.Close();
                da.Dispose();
                conn.Dispose();
            }
        }
        return ds;
    }
}查询数据的sql语句:
 SELECT
 	a.SalesOrderNo,
 	CASE a.ExtField1
 		WHEN 1 THEN '采购'
 		WHEN 2 THEN '销售'
 		ELSE '委外'
 	END AS type,
 	b.CustName,
 	a.InvoiceNum,
 	a.ComSendMoney,
 	a.ReceivedPrepaid,
 	isnull(null,0) as fk
 FROM officedba.AccountsRP a ,officedba.ProviderInfo b
 WHERE a.IsAll = 1 and a.Dept=b.ID and a.Status=1
基于asp.net的excel导入导出的更多相关文章
- 一个基于POI的通用excel导入导出工具类的简单实现及使用方法
		前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴. ... 
- ASP .Net C# ---Excel导入导出方法
		导入导出的方法以及引用,可以自行创建一个帮助类 using System;using NPOI.SS.UserModel;using NPOI.XSSF.UserModel;using NPOI.HS ... 
- 基于EPPlus和NPOI实现的Excel导入导出
		基于EPPlus和NPOI实现的Excel导入导出 CollapseNav.Net.Tool.Excel(NuGet地址) 太长不看 导入 excel 文件流将会转为 ExcelTestDto 类型的 ... 
- ASP.NET 之 常用类、方法的超级总结,并包含动态的EXCEL导入导出功能,奉上类库源码
		实用类:UtilityClass 包含如下方法 判断对象是否为空或NULL,如果是空或NULL返回true,否则返回false 验证手机号是否正确 13,15,18 验证邮箱 验证网址 MD5加密,返 ... 
- 基于 POI 封装 ExcelUtil 精简的 Excel 导入导出
		注 本文是使用 org.apache.poi 进行一次简单的封装,适用于大部分 excel 导入导出功能.过程中可能会用到反射,如若有对于性能有极致强迫症的同学,看看就好. 序 由于 poi 本身只是 ... 
- Mego(04) - NET简单实现EXCEL导入导出
		前言 相信做过信息系统的朋友都会遇到EXCEL导入导出的相关开发,做过不少EXCEL导入导出后总结起来大致有如下几种方式实现: ADO.NET的OldDb或ODBC连接EXCEL使用DataTable ... 
- 土制Excel导入导出及相关问题探讨
		转载请注明出处https://www.cnblogs.com/funnyzpc/p/10392085.html 新的一年,又一个开始,不见收获,却见年龄,好一个猪年,待我先来一首里尔克的诗: < ... 
- 利用反射实现通用的excel导入导出
		如果一个项目中存在多种信息的导入导出,为了简化代码,就需要用反射实现通用的excel导入导出 实例代码如下: 1.创建一个 Book类,并编写set和get方法 package com.bean; p ... 
- Excel导入导出的业务进化场景及组件化的设计方案(上)
		1:前言 看过我文章的网友们都知道,通常前言都是我用来打酱油扯点闲情的. 自从写了上面一篇文章之后,领导就找我谈话了,怕我有什么想不开. 所以上一篇的(下)篇,目前先不出来了,哪天我异地二次回忆的时候 ... 
随机推荐
- PyCharm设置字体风格
			设置字体风格:File—Setting—Editor-Color Scheme-Color Scheme Font-把Scheme设置为:WarmNeon 
- Nginx详解六:Nginx基础篇之Nginx日志
			1.Nginx日志类型 error.log:记录Nginx处理http请求的错误的状态,以及Nginx服务本身服务运行的错误的状态 access_log:记录通过Nginx的http请求的访问状态,用 ... 
- Java 11 这 8 个逆天新特性教你写出更牛逼的代码!
			美国时间2018年 09 月 25 日,Oralce 正式发布了 Java 11,这是据 Java 8 以后支持的首个长期版本. 为什么说是长期版本,看下面的官方发布的支持路线图表. 可以看出 Jav ... 
- 从零开始  DOM操作 笔记
			<div id="box" class="box"></div> --> var myBox = document.g ... 
- php抽奖概率算法
			方法一: function get_rand($proArr) { $result = array(); foreach ($proArr as $key => $val) { $arr[$ke ... 
- uva 11367 (Dijkstra+DP)
			题意:一辆汽车在一张无向图中开告诉你每个城市加油的费用.每次给q个查询(起点,终点,油箱容量)问你最小花费是多少. 思路:一道Dijkstra状态的题目.在这种最短路问题中一维的dis数组记录的信息往 ... 
- 使用Eclipse绑定Tomcat并发布应用
			l 步骤1:获得服务器运行环境配置,Window/Preferences/Server/Runtime Environmen l步骤2:添加服务器 l步骤3:选择服务器在硬盘的地址,然后所有的都是确定 ... 
- CGAffineTransform的使用
			typedef struct CGAffineTransform CGAffineTransform; struct CGAffineTransform { CGFloat a, b, c, d; C ... 
- 【Android】Android取消EditText自动获取焦点
			解决方法: 在EditText的父级控件中找一个,设置成 android:focusable="true" android:focusableInTouchMode="t ... 
- 分布式配置 Spark 2.0版本  2.1版本   1.6版本
			apache的各个软件各个版本下载: http://archive.apache.org/dist/ 1.下载spark. sudo tar -zxf ~/下载/spark-2.0.2-bin-wi ... 
