新建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导入导出的更多相关文章

  1. 一个基于POI的通用excel导入导出工具类的简单实现及使用方法

    前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴. ...

  2. ASP .Net C# ---Excel导入导出方法

    导入导出的方法以及引用,可以自行创建一个帮助类 using System;using NPOI.SS.UserModel;using NPOI.XSSF.UserModel;using NPOI.HS ...

  3. 基于EPPlus和NPOI实现的Excel导入导出

    基于EPPlus和NPOI实现的Excel导入导出 CollapseNav.Net.Tool.Excel(NuGet地址) 太长不看 导入 excel 文件流将会转为 ExcelTestDto 类型的 ...

  4. ASP.NET 之 常用类、方法的超级总结,并包含动态的EXCEL导入导出功能,奉上类库源码

    实用类:UtilityClass 包含如下方法 判断对象是否为空或NULL,如果是空或NULL返回true,否则返回false 验证手机号是否正确 13,15,18 验证邮箱 验证网址 MD5加密,返 ...

  5. 基于 POI 封装 ExcelUtil 精简的 Excel 导入导出

    注 本文是使用 org.apache.poi 进行一次简单的封装,适用于大部分 excel 导入导出功能.过程中可能会用到反射,如若有对于性能有极致强迫症的同学,看看就好. 序 由于 poi 本身只是 ...

  6. Mego(04) - NET简单实现EXCEL导入导出

    前言 相信做过信息系统的朋友都会遇到EXCEL导入导出的相关开发,做过不少EXCEL导入导出后总结起来大致有如下几种方式实现: ADO.NET的OldDb或ODBC连接EXCEL使用DataTable ...

  7. 土制Excel导入导出及相关问题探讨

    转载请注明出处https://www.cnblogs.com/funnyzpc/p/10392085.html 新的一年,又一个开始,不见收获,却见年龄,好一个猪年,待我先来一首里尔克的诗: < ...

  8. 利用反射实现通用的excel导入导出

    如果一个项目中存在多种信息的导入导出,为了简化代码,就需要用反射实现通用的excel导入导出 实例代码如下: 1.创建一个 Book类,并编写set和get方法 package com.bean; p ...

  9. Excel导入导出的业务进化场景及组件化的设计方案(上)

    1:前言 看过我文章的网友们都知道,通常前言都是我用来打酱油扯点闲情的. 自从写了上面一篇文章之后,领导就找我谈话了,怕我有什么想不开. 所以上一篇的(下)篇,目前先不出来了,哪天我异地二次回忆的时候 ...

随机推荐

  1. SpringMvc框架MockMvc单元测试注解及其原理分析

    来源:https://www.yoodb.com/ 首先简单介绍一下Spring,它是一个轻量级开源框架,简单的来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开 ...

  2. MySQL5.7.20报错Access denied for user 'root'@'localhost' (using password: NO)

    在centos6.8上源码安装了MySQL5.7.20,进入mysql的时候报错如下: 解决办法如下: 在mysql的配置文件内加入: vim  /etc/my.cnf skip-grant-tabl ...

  3. tomcat安装出现的闪退问题

    如果闪退 在该文件中结尾添加pause  可以检测到路径问题是不是有问题

  4. 在 Windows服务器中启用/禁用SMBv1、SMBv2和SMBv3的方法

    本文介绍如何在 SMB 客户端和服务器组件上启用/禁用服务器消息块 SMBv1.SMBv2 和 SMBv3. 注意:建议由专业技术工程师完成以下操作. 禁用 SMBv2 和 SMBv3 的影响 我们建 ...

  5. C#学习-面向对象语言都有类

    面向对象语言的一个基本特征是它们都有类,类是C#(这类语言)中的一种复杂数据类型. 类代表一组具有公共属性和行为的对象. 在C#中定义一个类是非常简单的,只需使用class关键字并按格式来定义即可. ...

  6. 反射PropertyInfo的简单使用

    namespace EF6._0Test { class Program { /// <summary> /// PropertyInfo的简单使用 /// </summary> ...

  7. 【Android】ContentValues的用法

    ContentValues 和HashTable类似都是一种存储的机制 但是两者最大的区别就在于,contenvalues只能存储基本类型的数据,像string,int之类的,不能存储对象这种东西,而 ...

  8. lr场景异常Continuing after Error -26479: Conversion of form submission data to the target charset failed: U_TRUNCATED_CHAR_FOUND解决方法

    在lr压测场景中执行,发现 一个事务都没有成功,很是奇怪,发现用linux的agent各种问题 查看lr运行日志 看到这里基本确定是编码的问题,然后想起lr设置编码的地方就那么几个,所以逐个尝试 改完 ...

  9. day10.函数升级

    1.写函数,接受n个数字,求这些参数数字的和.(动态传参) def summ(*args): all = 0 for i in args: all = all + i return all ret = ...

  10. Linux下的Mysql数据库备份+还原

    数据库备份: root@debian-mm:/home/debian-mm# mysqldump -u root -p Account > Account.sql Enter password: ...