DevExpress XtraGrid 数据导出导入Excel
// <summary>
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void FrmAppItem_F9ClickHandler(object sender, EventArgs e)
{
string strName = "";
try
{
if (gvSelectedItems.RowCount == 0)
{
MessageBoxShow.ShowProMessage("Grid表格中没有数据,不能导出为Excel");
return;
}
DateTime MMSDate = RealSailing.UI.Service.ServiceManager.GetSystemDateTime();
using (SaveFileDialog saveFileDialog = new SaveFileDialog())
{
saveFileDialog.Filter = "导出Excel(*.xls)|*.xls";
saveFileDialog.FilterIndex = 0;
saveFileDialog.RestoreDirectory = true;
saveFileDialog.CreatePrompt = true;
saveFileDialog.Title = "导出文件保存路径";
//默认的文件名
saveFileDialog.FileName = strTitle + " - " + MMSDate.ToString("yyyyMMdd");
//saveFileDialog.ShowDialog();
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
strName = saveFileDialog.FileName;
if (strName.Length != 0)
{
gridColumn2.Visible = false;
gridItemID2.Visible = true;
gridItemID2.VisibleIndex = 0;
gvSelectedItems.ExportToXls(strName);
gridColumn2.Visible = true;
gridItemID2.Visible = false;
MessageBoxShow.ShowProMessage("导出Excel成功", strTitle);
//关闭操作
System.Reflection.Missing miss = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Excel.Application objExcel = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook objWorkBook = objExcel.Workbooks.Add(miss);
Microsoft.Office.Interop.Excel.Worksheet objSheet = (Microsoft.Office.Interop.Excel.Worksheet)objWorkBook.ActiveSheet;
objWorkBook.Close(null, null, null);
objExcel.Workbooks.Close();
objExcel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(objExcel);
System.Runtime.InteropServices.Marshal.ReleaseComObject(objWorkBook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(objSheet);
objSheet = null;
objWorkBook = null;
objExcel = null;
}
else
{
MessageBoxShow.ShowProMessage("保存的Excel名称不能为空");
} }
}
}
catch (System.Exception msg)
{
MessageBoxShow.ShowProMessage(msg.ToString());
}
finally
{
GC.Collect();
}
} 导入Excel
/// <summary>
/// 导入按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void FrmAppItem_F8ClickHandler(object sender, EventArgs e)
{
try
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Title = "Excel文件";
ofd.FileName = "";
ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
ofd.Filter = "Excel文件(*.xls)|*.xls";
ofd.ValidateNames = true; //文件有效性验证ValidateNames,验证用户输入是否是一个有效的Windows文件名
ofd.CheckFileExists = true; //验证路径有效性
ofd.CheckPathExists = true; //验证文件有效性
string strName = string.Empty;
if (ofd.ShowDialog() == DialogResult.OK)
{
strName = ofd.FileName;
}
if (strName == "")
{
return;
}
if (EcxelToGridView(strName, this.gvSelectedItems))
{
MessageBoxShow.ShowProMessage("数据导入成功", strTitle);
//isChanged = true;
}
else
MessageBoxShow.ShowProMessage("数据导入失败,请检查导入的Excel格式与数据是否正确", strTitle);
this.Cursor = Cursors.Default;
}
catch (System.Exception Msg)
{
MessageBoxShow.ShowProMessage("数据导入失败,请检查导入的Excel格式与数据是否正确", strTitle);
//MessageBoxShow.ShowErrMessage(Msg.ToString()+"数据导入失败,请检查导入的Excel格式与数据是否正确");
}
}
/// <summary>
/// Excel数据导入方法
/// </summary>
/// <param name="filePath"></param>
/// <param name="dgv"></param>
/// <returns></returns>
public bool EcxelToGridView(string filePath, DevExpress.XtraGrid.Views.Grid.GridView dgv)
{
bool isVailed = false;
string itemid = string.Empty;
string itemplu = string.Empty;
string itemName = string.Empty;
//根据路径打开一个Excel文件并将数据填充到ds中
try
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + filePath + ";Extended Properties ='Excel 8.0;HDR=YES;IMEX=1'";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;
//获取Excel中的sheet的名称
string SheetName= GetExcelSheetNames(filePath)[0];
//strExcel = "select * from [sheet1$]";
strExcel = "select * from [" + SheetName + "$]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
// RealSailing.DataSet.SlipInfo.SLPD010_SLIPSUMHDS ds = new RealSailing.DataSet.SlipInfo.SLPD010_SLIPSUMHDS();
System.Data.DataSet ds = new System.Data.DataSet();
myCommand.Fill(ds, "table1");
conn.Close();
if (ds.Tables["table1"].Rows.Count == 0)
{
MessageBoxShow.ShowProMessage("要导入的Excel没有数据");
}
ExcelDS.Clear();
for (int j = 0; j < ds.Tables["table1"].Rows.Count; j++)
{
if (ds.Tables["table1"].Rows[j]["商品id"].ToString().Trim() != string.Empty)
itemid = ds.Tables["table1"].Rows[j]["商品id"].ToString().Trim();
if (ds.Tables["table1"].Rows[j]["商品货号"].ToString().Trim() != string.Empty)
itemplu = ds.Tables["table1"].Rows[j]["商品货号"].ToString().Trim();
else
itemplu = " ";
if (ds.Tables["table1"].Rows[j]["商品名称"].ToString().Trim() != string.Empty)
itemName = ds.Tables["table1"].Rows[j]["商品名称"].ToString().Trim();
//把数据填充到ds中
FillDataToDs(itemid, itemplu, itemName);
isVailed = true;
}
if (lblSelectDs.Tables["MSTM150_ITEM"].Rows.Count == 0)
{
isVailed = false;
}
else if (ExcelDS.Tables["MSTM150_ITEM"].Rows.Count>0)
{//重复数据 显示提示
MsShowData msShow = new MsShowData();
msShow.GetDs = ExcelDS;
msShow.ShowDialog();
isVailed = true;
}
return isVailed;
}
catch (System.Data.OleDb.OleDbException ex)
{
if (ex.Message.IndexOf("不是一个有效名称。请确认它不包含无效的字符或标点,且名称不太长") != -1)
{
return false;
}
return false;
}
}
/// <summary>
/// 获取获得当前你选择的Excel Sheet的所有名字
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
public static string[] GetExcelSheetNames(string filePath)
{
Microsoft.Office.Interop.Excel.ApplicationClass excelApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
Microsoft.Office.Interop.Excel.Workbooks wbs = excelApp.Workbooks;
Microsoft.Office.Interop.Excel.Workbook wb = wbs.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, Type.Missing, Type.Missing);
int count = wb.Worksheets.Count;
string[] names = new string[count];
for (int i = 1; i <= count; i++)
{
names[i - 1] = ((Microsoft.Office.Interop.Excel.Worksheet)wb.Worksheets[i]).Name;
}
wb.Close(null, null, null);
excelApp.Quit();
wbs.Close();
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
System.Runtime.InteropServices.Marshal.ReleaseComObject(wbs);
excelApp = null;
wbs = null;
wb = null;
return names;
}
private void FillDataToDs(string itemid, string itemplu, string itemName)
{
DataRow[] rows = lblSelectDs.Tables["MSTM150_ITEM"].Select(string.Format("MSTM150_ITEMID='{0}'", itemid));
if (rows.Length == 0)
{
if (itemid.Trim() != string.Empty && itemplu.Trim() != string.Empty && itemName != string.Empty)
{
DataRow dr;
dr = lblSelectDs.Tables["MSTM150_ITEM"].NewRow();
dr[MSTM150_ITEM.MSTM150_ITEMID] = itemid;
dr["MSTM151_PLUCD"] = itemplu;
dr["MSTM150_ITEMCNM"] = itemName;
dr["CheckRemove"] = "0";
lblSelectDs.Tables["MSTM150_ITEM"].Rows.Add(dr);
}
//else if (itemid.Trim() == string.Empty)
//{
// string st = "导入的商品id不允许为空";
// sb.Append(st);
// sb.Append("\r\n");
//}
//else if (itemplu.Trim() == string.Empty)
//{
// string st = "导入的商品编码不允许为空";
// sb.Append(st);
// sb.Append("\r\n");
//}
//else if (itemName.Trim() == string.Empty)
//{
// string st = "导入的商品名称不允许为空";
// sb.Append(st);
// sb.Append("\r\n");
//}
}
else if(rows.Length>0)
{
ExcelDS.Tables["MSTM150_ITEM"].ImportRow(rows[0]);
}
}
private void gvSelectedItems_RowCountChanged(object sender, EventArgs e)
{//导出按钮
this.F9Property.Enable=(gvSelectedItems.RowCount == 0) ? false : true;
} //导入导出Excel 注意的是及时的关闭Excel,不然占用进程很麻烦,我调试了大半天太弄好的
DevExpress XtraGrid 数据导出导入Excel的更多相关文章
- .Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) 通过MVC控制器导出导入Excel文件(可用于java SSH架构)
.Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) [原文地址] 通过MVC控制器导出导入Excel文件(可用于java SSH架构) public cl ...
- vb.net-三种将datagridview数据导出为excel文件的函数
第一种方法较慢,但是数据格式都比较好,需要引用excel的 Microsoft.Office.Interop.Excel.dll office.dll #Region "导出excel函数 ...
- 机房收费系统——在VB中将MSHFlexGrid控件中的数据导出到Excel
机房收费系统中,好多查询的窗体都包含同一个功能:将数据库中查询到的数据显示在MSHFlexGrid控件中,然后再把MSHFlexGrid控件中的数据导出到Excel表格中. 虽然之前做过学生信息管理系 ...
- 将Datagridview中的数据导出至Excel中
首先添加一个模块ImportToExcel,并添加引用 然后导入命名空间: Imports Microsoft.Office.Interop Imports System.Da ...
- Delphi 数据导出到Excel
好多办公软件特别是财务软件,都需要配备把数据导出到Excel,下面就来介绍两种数据导出方法 1.ADODB导出查询结果(此方法需要安装Excel) 2.二维表数据导出(根据Excel文件结构生成二进制 ...
- 涂抹mysql笔记-数据导出导入
数据导出导入<>利用CSV存储引擎加载数据:CSV存储引擎基于CSV格式文件存储数据,CSV格式是纯文本格式的文件,以逗号分隔取值.CSV引擎表的所有列值不能为空.Excel可以直接打开有 ...
- C#将数据集DataSet中的数据导出到EXCEL文件的几种方法
using System; using System.Collections.Generic; using System.Text; using System.Data; using System.W ...
- struts2结合poi-3.7实现数据导出为excel
我们在处理数据的时候,有可能要将数据导出到excel文件中,那么java中是怎么实现的呢?apache开发的poi就可以帮我们实现啦,它也是开源的代码,导入相应的jar包,就可以轻松实现,下面让我们来 ...
- DataTable数据导出到Excel,并发送到客户端进行下载
本代码实现思路是:页面显示和导出分开,导出的数据和用于页面显示的是同一查询数据方式,所以也是同样的数据,只是在导出数据时从数据库重新捞了一次数据.此导出数据方式会先将数据保存到Excel中,然后将创建 ...
随机推荐
- Windows程序设计-窗口和消息
本章内容比较少,没有代码类的内容,这里付思维导图一章,看起来比较清晰.
- MongoDB条件查询
1.查询集合中的所有记录 db.users.find() { "_id" : ObjectId("528b1173613e3289197a6486"), &qu ...
- Hadoop有关的网站
软件下载: http://archive.apache.org hbase对Hadoop的支持矩阵: https://hbase.apache.org/book.html#configuration
- JDK错误
WARN org.mortbay.log: Failed to read file: /usr/lib/jvm/jdk1.8.0_66/jre/lib/ext/._cldrdata.jar 删除._c ...
- locals()函数访问当前还在作用范围内的局部变量
>>> element = 'silver' >>> number = 47 >>> 'Element {number} is {element} ...
- Flask框架学习笔记(API接口管理平台 V1.0)
今天博主终于完成了API接口管理平台,最后差的就是数据库的维护, 博主这里介绍下平台的设计原理,首先基于python,利用flask的web框架+bootstrap前端框架完成,先阶段完成了前台展示页 ...
- SVN中文件属性
从SVN中checkout代码,然后设置crontab 定时执行脚本,发现permission denied 查看发现脚本没有可执行权限 但是,之前项目中的代码是有该权限的,于是猜想应该可以对SVN中 ...
- App交互demo
Android <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" ...
- log4net按等级多种方式记录日志
log4net.config <?xml version="1.0"?> <configuration> <configSections> &l ...
- Ugly Window 【acm题】
话说好久没有碰acm题目了.............................. 看到Ugly Window这道题目,没有多想,就直接先找到字母的连续长度和连续高度,并统计该字母的总个数,然后用 ...