c# 导入

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ImportFiles.aspx.cs" Inherits="DataReport.OilDistribution.ImportFiles1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head id="Head1" runat="server">

<title>导入</title>

<script src="../Scripts/jquery-1.6.2.min.js" type="text/javascript"></script>

<script src="../Scripts/boot.js" type="text/javascript"></script>

<script src="../Scripts/Utility.js" type="text/javascript"></script>

<script src="swfupload/swfupload.js" type="text/javascript">

</script>

<style type="text/css">

body         {             font-size: 12px;         }

</style>

</head>

<body>

<table border="0" cellpadding="0" cellspacing="0" align="center" width="90%">

<tr>

<td colspan="2" height="5px">

</td>

</tr>

<tr>

<td align="right" width="25%" height="40px">

选择文件:&nbsp;&nbsp;

</td>

<td>

<input id="fileupload1" style="width: 90%;" class="mini-fileupload" name="Fdata"                     limittype="*.xls;*.xlsx" flashurl="../OilDistribution/swfupload/swfupload.swf"                     onuploadsuccess="onUploadSuccess" />

</td>

</tr>

<tr>

<td height="40px">                 &nbsp;

</td>

<td>

<a class="mini-button" id="btnImport" onclick="Import()" style="width: 60px;">确定</a>&nbsp;&nbsp;

<a class="mini-button" id="btnCancel" onclick="onCancel()" style="width: 60px;">取消</a>

</td>

</tr>

</table>

</body>

<script type="text/javascript">

mini.parse();
    var fileupload = mini.get("fileupload1");
    var date = Utility.getQueryString("date");
    var url = bootPATH + "../OilDistribution/AjaxReport.ashx?method=Import";
    fileupload.uploadUrl = url;
    //文件导入
    function Import() {
        if (fileupload.getText() == "") {
            mini.alert("请选择要导入的excel文件", "信息提示");
            return;
        }
        fileupload.startUpload();
    }
    function onUploadSuccess(e) {
        switch (e.serverData) {
            case "suc":
                mini.alert("导入成功", "信息提示", function () {
                    CloseWindow("cancel");
                });
                break;
            case "a":
                mini.alert("没有需要导入的数据", "信息提示", function () {
                    CloseWindow("cancel");
                });
                break;
            case "b":
                mini.alert("导入的文件不存在", "信息提示", function () {
                    CloseWindow("cancel");
                });
                break;
            case "p":
                mini.alert("不能确认你要上传哪个省的数据", "信息提示", function () {
                    CloseWindow("cancel");
                });
                break;
            case "exists":
                mini.alert("日报已审核,请联系管理员取消审核后再重新上报", "信息提示", function () {
                    CloseWindow("cancel");
                });
                break;
            default:
                mini.alert("导入失败", "信息提示");
                break;
        }
        this.setText("");
    }
    //关闭弹出窗口
    function CloseWindow(action) {
        if (window.CloseOwnerWindow) return window.CloseOwnerWindow(action);
        else window.close();
    }
    function onCancel(e) {
        CloseWindow("cancel");
    }

</script>
</html>

protected override object processQuery(HttpContext context, out bool hasError)
        {
            hasError = false;
            string method = context.Request["method"];
            switch (method)
            { case "Import": //导入
                    return Import(context, out hasError);

}
        }

private string Import(HttpContext context, out bool hasError)

{

ReportState32BLL sbll = new ReportState32BLL();

hasError = false;

string root = context.Server.MapPath("~/UploadFiles/");

//找到目标文件对象

HttpPostedFile uploadFile = context.Request.Files["Fdata"];

//获取文件后缀

string ext = uploadFile.FileName.Substring(uploadFile.FileName.LastIndexOf("."));

string fileName = uploadFile.FileName;

string file = string.Format("{0}{1}{2}{3}", root, Sessions.CurrentUser.ID, DateTime.Now.ToString("yyyyMMddhhmmssffff"), ext);

string sheetName = "成品油进、销、存日报";

uploadFile.SaveAs(file);

try             {

//进销存日报主表赋值

Sys_ReportState32 model = new Sys_ReportState32();

string proid = Sessions.CurrentUser.ProvinceID;

if (proid == null || proid == "")

{

return "p";//没有需要导入的数据

}

model.Id = Convert.ToInt32(DateTime.Now.ToString("yyMMdd") + proid);

model.ProvinceID = Convert.ToInt32(proid);

model.UserID = Sessions.CurrentUser.ID;

model.RecordStatus = 2;//  1未上报    2上报未审核   3审核通过

model.ReportDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));

model.FILEPATH = file;

int state = sbll.GetStateById(model.Id);

if (state != 3) // 3 审核通过

{

if (File.Exists(file))

{

ExcelDataHelper excelDataHelper = new ExcelDataHelper(file);

DataTable dt = excelDataHelper.GetAllData(sheetName); //获取excel数据

if (dt == null)                         {

return excelDataHelper.ErrorMessage;

}

else

{

if (dt.Rows.Count == 0)

{

return "a"; //没有需要导入的数据

}

//导入数据

bool result = sbll.Import(dt, model);

if (result)

{

return "suc";

}

}

}

else

{

return "b"; //导入的文件不存在

}

}

else

{

return "exists";

}

}

catch (Exception ex)

{

context.Response.Write("<script Language=‘JavaScript‘>...alert(" + ex + ")</script>");

return "no";

}

return "";

}

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data;

using System.Data.OleDb;

namespace CNPC.Platform.Utility {

public class ExcelDataHelper     {

public string ErrorMessage { get; set; }

string connStr = string.Empty;

public ExcelDataHelper(string xlsFile)

{             connStr = getConnStr(xlsFile);

}

public DataTable GetAllData(string sheetName)

{

ErrorMessage = string.Empty;

DataTable dt = null;

string sql = string.Format("select * from [{0}$]", sheetName);

OleDbDataAdapter oleDbAdapter = null;

try             {

oleDbAdapter = new OleDbDataAdapter(sql, connStr);

dt = new DataTable();

oleDbAdapter.Fill(dt);

dt.TableName = sheetName;

}

catch (Exception ex)

{

dt = null;

ErrorMessage = ex.Message;

}

finally

{

if (oleDbAdapter != null)

{

oleDbAdapter.Dispose();

oleDbAdapter = null;

}

}

return dt;

}

string getConnStr(string xlsFile)         {

string ext = xlsFile.Substring(xlsFile.LastIndexOf(‘.‘) + 1).ToLower();

switch (ext)

{

case "xlsx":

return string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source= {0};Extended Properties=‘Excel 12.0;HDR=YES;IMEX=1;‘", xlsFile);

case "xls":

default:

return string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=‘Excel 8.0;HDR=YES;IMEX=1‘", xlsFile);

}

}

}

}

时间: 2024-10-12 06:53:46

c# 导入的相关文章

如何用 Android Studio 导入开源项目以及常见错误的解决办法

声明:这篇文章完全来自这篇文章,感谢大神的相助.这篇文章纯粹是为了备份. 本篇以Github上最热门的MaterialDesign库,MaterialDesignLibrary来介绍怎样使用Android Sudio导入开源项目的,如果你和我一样刚刚从Eclipse转到AS,那本篇文章非常适合你. 如果不引入任何第三方库,不做自动化分渠道打包等操作,那可以在完全不了解Gradle的情况下进行Android项目的开发.但如果要想导入Github上的热门项目,必须首先熟悉Gradle. 1. Gra

自签证书的创建与导入

1.创建根秘钥 openssl genrsa -outca.key 20482.创建根证书 openssl req -new -x509 -days 36500 -sha256 -keyca.key -outopenas.crt -subj "/C=CN/ST=Jiangsu/L=Nanjing/O=HuaweiCA/OU=112.13.167.7"3.创建SSL证书私匙 openssl genrsa -outserver.key 2048位4.建立SSL证书 openssl req

将Excel导入DataGridView 中的"select * from [Sheet1$]"中[ ]里面表单名的动态获取

Sheet1$是Excel默认的第一个表名,如果改动:select * from [Sheet1$]"将查询失败,因此应根据选择自动获取excel表名: 1 OpenFileDialog ofd = new OpenFileDialog(); //选择文件路径 2 ofd.Title = "Excel文件"; 3 ofd.FileName = ""; 4 ofd.Filter = "Excel文件(*.xls)| *.xls"; 5 s

jdbc驱动jar导入eclipse

在使用JDBC编程时需要连接数据库,导入JAR包是必须的,导入其它的jar包方法同样如此,导入的方法是 打开eclipse 1.右击要导入jar包的项目,点properties 2.左边选择java build path,右边选择libraries 3.选择add External jars 4.选择jar包的按照路径下的确定后就行了. Java连接MySQL的最新驱动包下载地址 http://www.mysql.com/downloads/connector/j 有两种方法导入jar包,第一种

把Excel的数据导入到数据库

将Excel作为数据源,将数据导入数据库,是SSIS的一个简单的应用,下图是示例Excel,数据列是code和name 第一部分,Excel中的数据类型是数值类型 1,使用SSDT创建一个package,创建Excel data source component,SSDT会在Connection Managers中创建一个Excel的connection 由于示例Excel的首行是列名,所以需要勾选"First row has column names",Excel connectio

sql server 导入平面文件源数据,错误 0xc02020a1错误 0xc020902a 错误 0xc02020c5,返回状态值 4 和状态文本“文本被截断,或者一个或多个字符在目标代码页...

使用sql server 导入平面文件源数据时,报错:错误 0xc02020a1: 错误 0xc020902a: 错误 0xc02020c5:错误 0xc0047022: 返回状态值 4 和状态文本"文本被截断,或者一个或多个字符在目标代码页中没有匹配项. 错误 0xc02020a1: 数据流任务 1: 数据转换失败.列"列 6"的数据转换返回状态值 4 和状态文本"文本被截断,或者一个或多个字符在目标代码页中没有匹配项.". (SQL Server 导入

(转载)解决AndroidStudio导入项目在 Building gradle project info 一直卡住

源地址http://blog.csdn.net/yyh352091626/article/details/51490976 Android Studio导入项目的时候,一直卡在Building gradle project info这一步,主要原因还是因为被墙的结果.gradle官网虽然可以访问,但是速度连蜗牛都赶不上... 解决办法主要有两种,一是直接下载gradle离线包,二是修改项目的gradle-wrapper.properties里的gradle版本为自己电脑已有的版本. 离线包下载导

python:模块导入之浅认识

(1)python有大量的模块: 1.内部提供的模块:不需要安装,可以直接调用 2.第三方库:包括业内开源的模块和自己开发的,需要安装 (2)什么是pyc文件: pyc文件的pycodeobject的一种持久化保存,而pycodeobject则是python真正编译的结果 明白什么时pyc文件,则我们需要从python的运行过程说起: 1.首先当python程序运行时,编译的结果则是保存在位于内存中的pycodeobject中,当python运行结束时,将pycodeobject写入到pyc文件

已经在Git Server服务器上导入了SSH公钥,可用TortoiseGit同步代码时,还是提示输入密码?

GitHub虽好,但毕竟在国内访问不是很稳定,速度也不快,而且推送到上面的源码等资料必须公开,除非你给他交了保护费:所以有条件的话,建议大家搭建自己的Git Server.本地和局域网服务器都好,不信你试试,那速度,怎一个爽字了得! 默认情况下,使用TortoiseGit同步代码,每次都需要输入用户名和密码,但为了方便可以在客户端创建ssh密钥,用于服务器端和客户端的认证(详细过程大家可参考这里),但有时会出现“ 已经在Git Server服务器上导入了SSH公钥,可用TortoiseGit同步

Excel导入导出例子

一键上传 在ssh中上传批量数据表格 1.必须同步提交form表单 2.Form表单编码方式:multipart/form-data 3.提交方式必须为post 4.上传文件对应input type="file" 为导入按钮添加一键上传效果: //为导入添加一键上传 $("#button-import").upload({ action : '../../area_batchImport.action', //在文件选中时,作出校验 onSelect : funct