Excel和XML文件导入
using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Net.Mail;
using System.Runtime.InteropServices;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml.Serialization;
using Club365Web.BaseClass;
using Club365.Common;
using Club365.Business;
using Club365.DataLinq;
using System.Globalization;
using Microsoft.Office.Interop.Excel;
using Microsoft.Reporting.WebForms;
using System.Data;
using System.Xml;
namespace Club365Web.Member
{
public partial class MemberImport : PageBase
{
/// <summary>
/// On PreInit page event
/// </summary>
/// <param name="e"></param>
protected override void OnPreInit(EventArgs e)
{
AuthenticationRequired = true;
base.OnPreInit(e);
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindDropDowns();
}
}
/// <summary>
/// Binds the drop downs.
/// </summary>
protected void BindDropDowns()
{
//get exclude fields
string fields = System.Configuration.ConfigurationManager.AppSettings["FieldsExcludeFromMemberexport"];
string[] excludeFields = fields.Split(',');
MemberManager objMemberManager;
try
{
ddlFields.Items.Clear();
objMemberManager = new MemberManager();
IEnumerable<string> columns = objMemberManager.GetColumnNameFromTable("persons");
foreach (string c in columns)
{
if (!excludeFields.Contains(c))
{
ListItem item = new ListItem(c, c);
ddlFields.Items.Add(item);
}
}
}
catch (Exception ex)
{
// Error logging
WriteSystemLog(AppConstant.EXCEPTION + ex.Message, Convert.ToChar(AppEnum.LogType.E.ToString()));
throw ex;
}
finally
{
objMemberManager = null;
}
}
protected void btnImport_Click(object sender, EventArgs e)
{
MemberManager objMemberManager;
try
{
string ddlField = Request["ctl00$ContentPlaceHolder1$ddlFields"];
string[] ddlFields = ddlField.Split(',');
if (CurrentSession.SiteID != 0)
{
objMemberManager = new MemberManager();
System.Data.DataTable dt = (System.Data.DataTable)Session["Exceltable"];
int columns = dt.Columns.Count;
for (int i = 0; i < columns; i++)
{
dt.Columns[i].ColumnName = ddlFields[i];
}
bool isNotAllowNullFieldExist = true;
string allowFieldNotExsitErrorMessage = "";
if (!dt.Columns.Contains("PERSONID"))
{
isNotAllowNullFieldExist = false;
allowFieldNotExsitErrorMessage += "Fiele PERSONID not allow null"+",";
}
if (!dt.Columns.Contains("MEMBERTYPE"))
{
isNotAllowNullFieldExist = false;
allowFieldNotExsitErrorMessage += "Fiele MEMBERTYPE not allow null" + ",";
}
if (!dt.Columns.Contains("MEMBERSTATUS"))
{
isNotAllowNullFieldExist = false;
allowFieldNotExsitErrorMessage += "Fiele MEMBERSTATUS not allow null" + ",";
}
//check column that not allow null exsit
if (isNotAllowNullFieldExist)
{
int rows = dt.Rows.Count;
string fields = "siteid,SENDEINVOICE,";
if (!string.IsNullOrEmpty(ddlField))
{
fields += ddlField;
}
int notImportRows = 0;
string errorNo = "";
for (int i = 0; i < rows; i++)
{
string values = CurrentSession.SiteID.ToString() + "," + "0" + ",";
for (int j = 0; j < columns; j++)
{
if (dt.Columns[j].DataType.Name=="String")
{
values += "'" + dt.Rows[i][j].ToString()+"'"+",";
}
else
{
values += dt.Rows[i][j].ToString() + ",";
}
}
//prime key check
int personId = Convert.ToInt32(dt.Rows[i]["PERSONID"]);
var isPrimeKeyExsit = objMemberManager.IsPrimeKeyExisted(CurrentSession.SiteID, personId);
if (isPrimeKeyExsit)
{
notImportRows += 1;
errorNo += (i+1).ToString() + ",";
this.lbMessage.Text += string.Format("This personID has already exsited line {0}", i) +
",";
}
else
{
//check column name FIRSTNAME,LASTNAME,DATEOFBIRTH all exsit and it's value all exsit
if (ddlField.IndexOf("FIRSTNAME") != -1 && ddlField.IndexOf("LASTNAME") != -1 &&
ddlField.IndexOf("DATEOFBIRTH") != -1 && !(dt.Rows[i]["FIRSTNAME"] is System.DBNull) && !(dt.Rows[i]["LASTNAME"] is System.DBNull) && !(dt.Rows[i]["DATEOFBIRTH"] is System.DBNull) )
{
//if alread exsit and check box ticked, then update this item
if (objMemberManager.IsPersonExisted(dt.Rows[i]["FIRSTNAME"].ToString(),
dt.Rows[i]["LASTNAME"].ToString(),
Convert.ToDateTime(
dt.Rows[i]["DATEOFBIRTH"]))==1 && cbValidate.Checked)
{
//TODO: update item
//if (!objMemberManager.UpdatePersonInfo(fields,values,CurrentSession.SiteID,personId))
//{
// notImportRows += 1;
// errorNo += (i + 1).ToString() + ",";
//}
}
else
{
//import data
if (!objMemberManager.ImportDataIntoDatabase(fields, values.TrimEnd(',')))
{
notImportRows += 1;
errorNo += (i + 1).ToString() + ",";
}
}
}
else
{
//import data
if (!objMemberManager.ImportDataIntoDatabase(fields, values.TrimEnd(',')))
{
notImportRows += 1;
errorNo += (i + 1).ToString() + ",";
}
}
}
}
if (notImportRows > 0)
{
this.lbMessage.Text = notImportRows + " lines import failed, please check line: " +
errorNo.TrimEnd(',');
}
else
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message",
"<script language='javascript' defer>alert('Import succeed!');window.location='/Member/MemberImport.aspx'</script>");
}
}
else
{
this.lbMessage.Text = isNotAllowNullFieldExist.ToString().TrimEnd(',');
}
}
else
{
this.lbMessage.Text = "SiteID lost, please login in again.";
}
}
catch (Exception ex)
{
// Error logging
WriteSystemLog(AppConstant.EXCEPTION + ex.Message, Convert.ToChar(AppEnum.LogType.E.ToString()));
throw ex;
}
finally
{
objMemberManager = null;
}
}
protected void btnUpload_Click(object sender, EventArgs e)
{
ExcelUpload();
}
/// <summary>
/// upload file
/// </summary>
protected void ExcelUpload()
{
String filepath = "";
string fileExtName = "";
string mFileName = "";
string mPath = "";
if (fu_excel.PostedFile.FileName != "")
{
filepath = fu_excel.PostedFile.FileName;
fileExtName = filepath.Substring(filepath.LastIndexOf(".") + 1);
mPath = this.Request.PhysicalApplicationPath + "UpLoadFiles\\";
mFileName = filepath.Substring(filepath.LastIndexOf("\\") + 1);
if (!Directory.Exists(mPath))
{
try
{
Directory.CreateDirectory(mPath);
}
catch (Exception ex)
{
throw ex;
}
}
if (File.Exists(mPath + mFileName))
{
try
{
File.Delete(mPath + mFileName);
}
catch (Exception ex)
{
throw ex;
}
}
#region get file extension name
Boolean fileOK = false;
String fileExtension = System.IO.Path.GetExtension(fu_excel.FileName).ToLower();
if (fu_excel.HasFile)
{
//String fileExtension = System.IO.Path.GetExtension(fu_excel.FileName).ToLower();
String[] allowedExtensions = { ".xls",".xml" };
for (int i = 0; i < allowedExtensions.Length; i++)
{
if (fileExtension == allowedExtensions[i])
{
fileOK = true;
}
}
}
#endregion
#region Is file upload succeed?
bool fileUpOK = false;
if (fileOK)
{
try
{
fu_excel.PostedFile.SaveAs(mPath + mFileName);
fileUpOK = true;
}
catch (Exception ex)
{
throw ex;
}
}
else
{
this.lbMessage.Text = "Upload file format error, should be. Xls or .Xml format";
}
#endregion
#region Excel will fill the dataset
if (fileUpOK)
{
System.Data.DataTable dt_User = new System.Data.DataTable();
try
{
if (fileExtension == ".xls")
{
dt_User = GetList(mPath + mFileName);
}
else if (fileExtension == ".xml")
{
dt_User = CXmlToDataTable(mPath + mFileName);
}
if (dt_User == null)
{
return;
}
}
catch (Exception ex)
{
throw ex;
}
int rowNum = 0;
try
{
rowNum = dt_User.Rows.Count;
}
catch (Exception ex)
{
throw ex;
}
if (rowNum == 0)
{
this.lbMessage.Text = "Excel table is empty, no data";
}
else
{
this.Panel1.Visible = false;
this.Panel2.Visible = true;
Session["Exceltable"] = dt_User;
string fields = "";
foreach (DataColumn dc in dt_User.Columns)
{
fields += dc.ColumnName + ",";
}
Session["fields"] = fields.TrimEnd(',');
}
}
#endregion
}
}
#region Get data from excel
/// <summary>
/// Gets the list.
/// </summary>
/// <param name="FilePath">The file path.</param>
/// <returns></returns>
public System.Data.DataTable GetList(string FilePath)
{
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + FilePath + ";" + "Extended Properties=Excel 8.0;";
string strSql = string.Empty;
Application app = new ApplicationClass();
Workbook workBook = app.Workbooks.Add(Type.Missing); ;
Worksheet workSheet = (Worksheet)workBook.Sheets.get_Item(1);
string workSheetName = string.Empty;
if (!File.Exists(FilePath))
{
this.lbMessage.Text = "Excel file specified path does not exist!";
}
Workbook tmpworkBook;
Worksheet tmpworkSheet;
try
{
object missing = System.Reflection.Missing.Value;
//open a WorkBook
tmpworkBook = app.Workbooks.Open(FilePath,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, true, missing);
// tmpworkSheet = (Worksheet) workBook.Sheets.get_Item ( 1 );
app.Visible = false;
tmpworkSheet = (Worksheet)tmpworkBook.Worksheets[1];
workSheetName = tmpworkSheet.Name;
if (workSheetName != "")
{
strSql = "select * from [" + workSheetName + "$]";
OleDbConnection conn = new OleDbConnection(connectionString);
conn.Open();
OleDbDataAdapter myCommand = null;
myCommand = new OleDbDataAdapter(strSql, connectionString);
System.Data.DataTable dt = new System.Data.DataTable();
myCommand.Fill(dt);
conn.Close();
conn.Dispose();
return dt;
}
else
{
return null;
}
}
catch (Exception ex)
{
return null;
throw ex;
}
finally
{
Kill(app); //kill Excel process
}
}
public string Get_FistWorkBookName(string fileName)
{
Application app = new ApplicationClass();
Workbook workBook = app.Workbooks.Add(Type.Missing); ;
Worksheet workSheet = (Worksheet)workBook.Sheets.get_Item(1);
string rev = string.Empty;
if (!File.Exists(fileName))
{
this.lbMessage.Text = "Excel file specified path does not exist!";
}
Workbook tmpworkBook;
Worksheet tmpworkSheet;
try
{
object missing = System.Reflection.Missing.Value;
//open a WorkBook
tmpworkBook = app.Workbooks.Open(fileName,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, true, missing);
// tmpworkSheet = (Worksheet) workBook.Sheets.get_Item ( 1 );
app.Visible = false;
tmpworkSheet = (Worksheet)tmpworkBook.Worksheets[1];
rev = tmpworkSheet.Name;
}
catch (Exception ex)
{
rev = "";
throw ex;
}
finally
{
tmpworkSheet = null;
tmpworkBook = null;
this.Dispose();
}
return rev;
}
[DllImport("User32.dll", CharSet = CharSet.Auto)]
public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID);
public void Kill(Application excel)
{
IntPtr t = new IntPtr(excel.Hwnd);
int k = 0;
GetWindowThreadProcessId(t, out k);
System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k);
p.Kill();
}
#endregion
#region Get data from xml
public DataSet CXmlFileToDataSet(string xmlFilePath)
{
if (!string.IsNullOrEmpty(xmlFilePath))
{
string path = xmlFilePath;
StringReader StrStream = null;
XmlTextReader Xmlrdr = null;
try
{
XmlDocument xmldoc = new XmlDocument();
//根据地址加载Xml文件
xmldoc.Load(path);
DataSet ds = new DataSet();
//读取文件中的字符流
StrStream = new StringReader(xmldoc.InnerXml);
//获取StrStream中的数据
Xmlrdr = new XmlTextReader(StrStream);
//ds获取Xmlrdr中的数据
ds.ReadXml(Xmlrdr);
return ds;
}
catch (Exception e)
{
throw e;
}
finally
{
//释放资源
if (Xmlrdr != null)
{
Xmlrdr.Close();
StrStream.Close();
StrStream.Dispose();
}
}
}
else
{
return null;
}
}
public System.Data.DataTable CXmlToDataTable(string xmlFilePath)
{
return CXmlFileToDataSet(xmlFilePath).Tables[0];
}
#endregion
}
}
Excel和XML文件导入的更多相关文章
- 如何将XML文件导入Excel中
如下图所示为一个规范的XML文件,在Excel中可以将规范的XML文件导入到Excel成为规范的表格.具体有如下几种方法: 工具/原料 Excel 方法/步骤 单击“数据”选项卡下的“ ...
- 工作小结:xml文件导入到oracle
上周遇到xml文件导入到oracle数据库中,发现正常的xml转成excle格式导入,只针对于1m以下的xml文件.当xml文件太大的时候,就没有作用了. 这时候,我找到了两种办法,一个是java,一 ...
- 【DRP】採用dom4j完毕XML文件导入数据库
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/lantingxv_jing/article/details/37762523 xml文件在如 ...
- 将CSV格式或者EXCEL格式的文件导入到HIVE数据仓库中
学习内容:数据导入,要求将CSV格式或者EXCEL格式的文件导入到HIVE数据仓库中: ①hive建表:test1 create table test1 (InvoiceNo String, Stoc ...
- Laravel Excel 实现 Excel-CSV 文件导入导出功能
Laravel Excel 是一款基于 PHPExcel 开发的Laravel框架专用的 Excel/CSV 文件导入导出功能的扩展包,用起来的非常方便. 它的 Github 地址是:https:// ...
- Excel关联xml文件
1.新建没传值的xml文件,变量名称自己定义好 2.打开excel,如果之前没有设置过,点击选项 如果当前Excel菜单栏中没有开发工具项,在自定义功能区先勾选上开发选项 3.点右下角的xml映射 弹 ...
- SpringIOC注入模块中xml文件导入其他xml文件配置
如果我们在spring框架中配置了多个xml文件,我们可以在读取配置文件的时候把这些xml文件一下全都读取 也可以只读一个总的xml文件,在这个总的xml文件中把其他的xml全都都导入进来. 例如: ...
- vcf格式文件转化为Excel(csv)格式文件(R语言的write.csv,write.table功能,Excel表的文件导入功能)
最近在整理文件,准备把vcf文件转化为Excel格式,或者CSV格式,网上搜了一堆资料,还真有人专门开发出转化格式的工具:叫vcf2csv(下载地址http://vcf2csv.sourceforge ...
- pom.xml文件导入了坐标,也没有报错,为什么还是没有相关的jar包的?
为什么会出现这样的错误呢?仔细想了想,赶紧去本地仓库看看jar也没有导入进来 解决问题的思路,就是把假的jar包文件删除掉,然后在IDEA上的坐标复制删除粘贴,IDEA就会重新导入jar包,这时就成功 ...
随机推荐
- SVN的那些事
1,终端报错:is too old (format 29) to work with client version '1.9.4 (r1740329)' (expects format 31). Yo ...
- MVVM学习笔记
MVVM学习笔记 1.MVVM的简介 MVVM模式是Model-View-ViewModel模式的简称,也就是由模型(Model).视图(View).视图模型(ViewModel),其目的是为了实现将 ...
- XCOPY: Access denied
用 XCOPY 拷贝文件,出现 “Access denied” 提示信息. 原因: 在如上拷贝的目标路径下,存在 ReadMe.txt, 并且是 只读 文件,这种情况下,需要增加一个 拷贝选项: /R ...
- spark - 从HDFS加载文件并分析
scala> val file=sc.textFile("/workspace/bpUserinfo_logs/bpUserinfo_20160212.log") scala ...
- processon完全装逼指南
一.引言 作为一名IT从业者,不仅要有扎实的知识储备,出色的业务能力,还需要具备一定的软实力.软实力体现在具体事务的处理能力,包括沟通,协作,团队领导,问题的解决方案等,这些能力在关键时刻比硬性的技术 ...
- 《Thinking In Java第四版》拾遗
<Thinking In Java第四版>拾遗 转自我的github(http://katsurakkkk.github.io/2016/05/Thinking-In-Java%E7%AC ...
- 初学JqueryMobile(一)
一.初学2个data标签 标签名称 标签属性 属性说明 备注 data-role page 容器或试图 表示容器的作用 header 标题 content 内容 footer 页脚 data-tran ...
- 怎样清除td和input之间空隙
<style> input {background:red;border:none;height:30px;margin:0px} td {background-color:blue;pa ...
- Jsop入门程序
package com.baidu; import java.io.IOException; import org.jsoup.Jsoup;import org.jsoup.nodes.Documen ...
- 菜鸟Android之路(上)
自己为什么要学android 本人作为应届毕业生,自己进入社会前做过好多梦,可是呢,现实还是打败了无邪!!面对社会的压力和残酷的竞争力自己如何生成下去??我自己对自己说:第一步 先养活自己,才能走好以 ...