当前位置: 首页 > 编程日记 > 正文

C# 实现Oracle中的数据与Excel之间的转换

最近项目要求实现数据库之间数据在各个数据库之间导入导出,在此做个笔记

1. 将Oracle中的表导入到Excel中,反之亦然

   private static readonly string connectionString = ConfigurationManager.ConnectionStrings["OracleConnection"].ConnectionString;
1
public void print(DataGridView dataGridView1) 2 { 3 //导出到execl 4 try 5 { 6 SaveFileDialog saveFileDialog = new SaveFileDialog(); 7 saveFileDialog.Filter = "导出Excel2003~2007 (*.xls)|*.xls|导出Excel2010~2013 (*.xlsx)|*.xlsx"; 8 saveFileDialog.FilterIndex = 0; 9 saveFileDialog.RestoreDirectory = true; 10 saveFileDialog.CreatePrompt = true; 11 saveFileDialog.Title = "导出文件保存路径"; 12 saveFileDialog.ShowDialog(); 13 string strName = saveFileDialog.FileName; 14 if (strName.Length != 0) 15 { 16 //没有数据的话就不往下执行 17 if (dataGridView1.Rows.Count == 0) 18 return; 19 20 // toolStripProgressBar1.Visible = true; 21 System.Reflection.Missing miss = System.Reflection.Missing.Value; 22 //实例化一个Excel.Application对象 23 Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); 24 excel.Application.Workbooks.Add(true); 25 excel.Visible = false;//若是true,则在导出的时候会显示EXcel界面。 26 if (excel == null) 27 { 28 MessageBox.Show("EXCEL无法启动!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); 29 return; 30 } 31 Microsoft.Office.Interop.Excel.Workbooks books = (Microsoft.Office.Interop.Excel.Workbooks)excel.Workbooks; 32 Microsoft.Office.Interop.Excel.Workbook book = (Microsoft.Office.Interop.Excel.Workbook)(books.Add(miss)); 33 Microsoft.Office.Interop.Excel.Worksheet sheet = (Microsoft.Office.Interop.Excel.Worksheet)book.ActiveSheet; 34 sheet.Name = "test"; 35 int m = 0, n = 0; 36 //生成Excel中列头名称 37 for (int i = 0; i < dataGridView1.Columns.Count; i++) 38 { 39 excel.Cells[1, i + 1] = dataGridView1.Columns[i].HeaderText;//输出DataGridView列头名 40 } 41 //把DataGridView当前页的数据保存在Excel中 42 for (int i = 0; i < dataGridView1.Rows.Count - 1; i++) 43 { 44 for (int j = 0; j < dataGridView1.Columns.Count; j++) 45 { 46 if (dataGridView1[j, i].ValueType == typeof(string)) 47 { 48 excel.Cells[i + 2, j + 1] = "'" + dataGridView1[j, i].Value.ToString(); 49 } 50 else 51 { 52 excel.Cells[i + 2, j + 1] = dataGridView1[j, i].Value.ToString(); 53 } 54 } 55 } 56 sheet.SaveAs(strName, miss, miss, miss, miss, miss, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, miss, miss, miss); 57 book.Close(false, miss, miss); 58 books.Close(); 59 excel.Quit(); 60 System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet); 61 System.Runtime.InteropServices.Marshal.ReleaseComObject(book); 62 System.Runtime.InteropServices.Marshal.ReleaseComObject(books); 63 System.Runtime.InteropServices.Marshal.ReleaseComObject(excel); 64 GC.Collect(); 65 MessageBox.Show("数据已经成功导出!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); 66 // toolStripProgressBar1.Value = 0; 67 System.Diagnostics.Process.Start(strName); 68 } 69 } 70 catch (Exception ex) 71 { 72 MessageBox.Show(ex.Message, "错误提示"); 73 } 74 }
 1    public void printAll(System.Data.DataTable dt)
 2         {
 3             //导出到execl
 4             try
 5             {
 6                 SaveFileDialog saveFileDialog = new SaveFileDialog();
 7                 saveFileDialog.Filter = "导出Excel (*.xls)|*.xls";
 8                 saveFileDialog.FilterIndex = 0;
 9                 saveFileDialog.RestoreDirectory = true;
10                 saveFileDialog.CreatePrompt = true;
11                 saveFileDialog.Title = "导出文件保存路径";
12                 saveFileDialog.ShowDialog();
13                 string strName = saveFileDialog.FileName;
14                 if (strName.Length != 0)
15                 {
16                     //没有数据的话就不往下执行
17                     if (dt.Rows.Count == 0)
18                         return;
19 
20                     // toolStripProgressBar1.Visible = true;
21                     System.Reflection.Missing miss = System.Reflection.Missing.Value;
22                     //实例化一个Excel.Application对象
23                     Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
24                     excel.Application.Workbooks.Add(true);
25                     excel.Visible = false;//若是true,则在导出的时候会显示EXcel界面。
26                     if (excel == null)
27                     {
28                         MessageBox.Show("EXCEL无法启动!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
29                         return;
30                     }
31                     Microsoft.Office.Interop.Excel.Workbooks books = (Microsoft.Office.Interop.Excel.Workbooks)excel.Workbooks;
32                     Microsoft.Office.Interop.Excel.Workbook book = (Microsoft.Office.Interop.Excel.Workbook)(books.Add(miss));
33                     Microsoft.Office.Interop.Excel.Worksheet sheet = (Microsoft.Office.Interop.Excel.Worksheet)book.ActiveSheet;
34                     sheet.Name = "test";
38                     //生成Excel中列头名称
39                     for (int i = 0; i < dt.Columns.Count; i++)
40                     {
41                         excel.Cells[1, i + 1] = dataGridView1.Columns[i].HeaderText;//输出DataGridView列头名
42                     }
43 
44                     //把DataGridView当前页的数据保存在Excel中
45                     if (dt.Rows.Count > 0)
46                     {
47                         for (int i = 0; i < dt.Rows.Count; i++)//控制Excel中行,上下的距离,就是可以到Excel最下的行数,比数据长了报错,比数据短了会显示不完
48                         {
49                             for (int j = 0; j < dt.Columns.Count; j++)//控制Excel中列,左右的距离,就是可以到Excel最右的列数,比数据长了报错,比数据短了会显示不完
50                             {
51                                 string str = dt.Rows[i][j].ToString();
52                                 excel.Cells[i + 2, j + 1] = "'" + str;//i控制行,从Excel中第2行开始输出第一行数据,j控制列,从Excel中第1列输出第1列数据,"'" +是以string形式保存,所以遇到数字不会转成16进制
53                             }
54                         }
55                     }
56                     sheet.SaveAs(strName, miss, miss, miss, miss, miss, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, miss, miss, miss);
57                     book.Close(false, miss, miss);
58                     books.Close();
59                     excel.Quit();
60                     System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet);
61                     System.Runtime.InteropServices.Marshal.ReleaseComObject(book);
62                     System.Runtime.InteropServices.Marshal.ReleaseComObject(books);
63                     System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
64 
65                     GC.Collect();
66                     MessageBox.Show("数据已经成功导出!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
67                     // toolStripProgressBar1.Value = 0;
68                     System.Diagnostics.Process.Start(strName);
69                 }
70             }
71             catch (Exception ex)
72             {
73                 MessageBox.Show(ex.Message, "错误提示");
74             }
75         }

这两个方法都可以将Oracle导出到Excel中。转自http://www.cnblogs.com/cpcpc/archive/2012/11/13/2767934.html

 1 class Excel2Oracle
 2     {
 3         private static readonly string connectionString = ConfigurationManager.ConnectionStrings["OracleConnection"].ConnectionString;
 4         public void InsertData2Oracle(DataSet ds)
 5         {
 6             using (OleDbConnection oraCon = new OleDbConnection(connectionString))
 7             {
 8                 oraCon.Open();
 9                 using (OleDbCommand cmd = new OleDbCommand())
10                 {
11                     cmd.Connection = oraCon;
12                     cmd.CommandType = CommandType.Text;
13 
14                     for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
15                     {
16                         List<string> list_ = new List<string>();
17                         for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
18                         {
19                             list_.Add(ds.Tables[0].Rows[i][j].ToString());
20                         }
21                         string temp = "";
22                         string t = ",";
23 
24                         for (int k = 0; k < list_.Count; k++)
25                         {
26                             if (k == list_.Count - 1) t = "";
27                             temp = temp + "'" + list_[k] + "'" + t + "";
28                             cmd.CommandText = string.Format("Insert into TBUSER values(" + temp + ")");
29                         }
30 
31                         cmd.ExecuteNonQuery();
32                     }
33 
34                 }
35                 oraCon.Close();
36 
37             }
38         }
    }  

代码比废话更要迷人,我就不多说什么了

转载于:https://www.cnblogs.com/jnzdn/p/5473595.html

相关文章:

【转】Word2007中不连续页码设置 多种页码设置

【转】Word2007中不连续页码设置 多种页码设置 页码是论文必不可少的部分。我们看一下如何添加页码&#xff0c;并且针对一些特殊的格式要求怎么应对&#xff1a; 如果是【毕业论文】有多种混合页码&#xff0c;有Ⅰ、Ⅱ、Ⅲ。。。还有1、2、3 。。。请直接看【第二种方法】。 …

vim编辑器异常退出产生备份文件

当非正常关闭vim编辑器时&#xff08;比如直接关闭终端或者电脑断电&#xff09;&#xff0c;会生成一个.swp文件&#xff0c;这个文件是一个临时交换文件&#xff0c;用来备份缓冲区中的内容。 需要注意的是如果你并没有对文件进行修改&#xff0c;而只是读取文件&#xff0c…

从0到1思考与实现iOS-Widget

讲述之前首先看下demo效果图&#xff1a; 基本的展开收起、本App本体交互然后再展示几个效果不错的 Widget app 毒物 && KeepESPNPCalcMusixmatchFantastical 2Carrot Weatherdemo 地址在此&#xff01;欢迎star 比心一、Widget总览 Widget 是 iOS8 推出第一版&…

Android Studio 初体验

Google在I/O2013大会上发布了Android新的开发工具Android Studio&#xff0c;趁周末时间做了一下尝试。有需要的可以在http://developer.android.com/sdk/installing/studio.html下载&#xff0c;当前版本是V0.1。官方解释&#xff1a;Android Studio is anew Android developm…

JAVA面试题(2)

1 String 与 new 的不同 使用“”赋值不一定每次都创建一个新的字符串&#xff0c;而是从“字符串实例池”中查找字符串。使用“new”进行赋值&#xff0c;则每次都创建一个新的字符串。 2 String与StringBuffer String类是不可变类&#xff0c;字符串一旦初始化后&#xff0c…

限制HTTP数据包发送Referer

一般点击一个A标签的时候都会发送 Referer 什么是 Referer&#xff1f; 就是你点击A标签 Referer的信息告诉服务端你从哪里点击出来的 可在HTML上加 <meta name"referrer" content"no-referrer">这样就不发送Referer头了

TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议

把这三个协议放到一起学习是因为这三个协议处于同一层&#xff0c;ARP协议用来找到目标主机的Ethernet网卡Mac地址&#xff0c;IP则承载要发送的消息。数据链路层可以从ARP得到数据的传送信息&#xff0c;而从IP得到要传输的数据信息。 1.IP协议 IP协议是TCP/IP协议的核心&…

数据结构与算法分析(C++版)(第二版)

查看书籍详细信息&#xff1a; 数据结构与算法分析&#xff08;C版&#xff09;&#xff08;第二版&#xff09; 内容简介 本书采用程序员最爱用的面向对象C语言来描述数据结构和算法&#xff0c;并把数据结构原理和算法分析技术有机地结合在一起&#xff0c;系统介绍了各种…

nginx反向代理原理讲解

一 、概述 反向代理&#xff08;Reverse Proxy&#xff09;方式是指以代理服务器来接受Internet上的连接请求&#xff0c;然后将请求转发给内部网络上的服务器&#xff1b;并将从服务器上得到的结果返回给Internet上请求连接的客户端&#xff0c;此时代理服务…

cojs 简单的数位DP 题解报告

首先这道题真的是个数位DP 我们考虑所有的限制&#xff1a; 首先第六个限制和第二个限制是重复的&#xff0c;保留第二个限制即可 第五个限制在转移中可以判断&#xff0c;不用放在状态里 对于第一个限制&#xff0c;我们可以增加一维表示余数即可 对于第四个限制也是同理 对于…

iOS ERROR ITMS - 打包上传报错整理

作者 Silence_广 关注 2017.03.24 11:12 字数 706 阅读 45评论 1喜欢 12ERROR ITMS-90034 ERROR ITMS-90034这个问题就是你的包里面的证书和开发者中心的证书不一样所以提交的时候回报错. 如果试过网上很多的解决方法之后&#xff08;诸如重新制作证书&#xff0c;删调过期证书…

照片墙瀑布流加载与阻止加载

网上大部分主流的瀑布流应用基本都是由后端在提供图片地址的同时提供图片宽高&#xff0c;这样&#xff0c;前端不必等待图片渲染完成&#xff0c;可以根据图片的宽高先把装载图片的容器或父节点先放上页面&#xff0c;完成基础性的布局&#xff0c;再让图片以渐变或其他方式逐…

利用Nginx实现简易负载均衡

基本思路如下&#xff1a; 比如我们有三个服务器&#xff1a; 其中: 130.251是反向代理转发服务器 130.251和130.238分别是负载服务器 Mysql服务器没有标出来, 为方便区分,我们先把1号负载的首页写成111111111 2号负载的首页写成222222 然后我们现在控制130.251, 把nginx配置文…

两行代码搞定iOS自定义HUD风格动画弹窗(支持选择记录) - SKChoosePopView的使用和实现思路

作者 ShevaKuilin 关注 2017.03.25 18:28* 字数 2014 阅读 270评论 0喜欢 23さらい屋五葉原文地址----> MyBlog HUD风格的选项弹窗是我们在日常开发中经常会碰到的一类需求&#xff0c;通常因为项目周期等因素&#xff0c;很少会专门抽出时间来对此类弹窗进行专门的定制开发…

yii2框架随笔29

今天我们来看UrlRule.php <?php /*** link http://www.yiiframework.com/* copyright Copyright (c) 2008 Yii Software LLC* license http://www.yiiframework.com/license/*/ namespace yii\web; use Yii; use yii\base\Object; use yii\base\InvalidConfigException; /*…

八种简易健康减肥瘦身法

①原地跑&#xff0c;紧实大腿肌肉&#xff1b;②上楼梯&#xff0c;瘦小腿、大腿、臀&#xff1b;③步行&#xff0c;瘦腿、腰&#xff1b;④瑜珈&#xff0c;瘦全身&#xff1b;⑤跳舞&#xff0c;瘦全身&#xff1b;⑥跳绳&#xff0c;瘦大腿、小腿&#xff1b;⑦晨操&#…

LaZagne检测windows本地存储的密码

LaZagne项目是用于检索存储在本地计算机上的大量密码的开源应用程序。 每个软件使用不同的技术&#xff08;明文&#xff0c;API&#xff0c;自定义算法&#xff0c;数据库等&#xff09;存储其密码。 该工具的开发是为了找到最常用的软件的密码。 下载到windows机器&#xff0…

通知提示SCPromptView

作者 陈小翰 关注 2017.03.24 18:01 字数 138 阅读 62评论 0喜欢 1SCPromptView SCPromptView : 显示在顶部的提示控件 你的star是我最大的动力 effect.gif安装 手动安装 下载源码&#xff0c;将SCPromptView文件夹拖进项目 CocoaPod pod SCPromptView 使用 SCPromptView 的用…

4566: [Haoi2016]找相同字符 SAM

折腾了好久。不过收获还是很多的。第一次自己去画SAM所建出来fail树。深入体会了这棵树的神奇性质。 当然&#xff0c;我最终靠着自己A掉了。&#xff08;这是我第一次推SAM的性质&#xff08;以前都是抄别人的&#xff0c;感觉自己好可耻&#xff09;&#xff0c;不过感觉好像…

NYOJ-232 How to eat more Banana

How to eat more Banana 时间限制&#xff1a;1000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;4描述A group of researchers are designing an experiment to test the IQ of a monkey. They will hang a banana at the roof of a building, and at the mean time, …

UIView Animation

作者 嘿o大远 关注 2017.03.23 17:02* 字数 402 阅读 47评论 1喜欢 3今天总结一下UIView动画就是 UiView动画是基于高层API封装进行封装的,对UIView的属性进行修改时候所产生的动画. 基本动画 下面两种方法是最常用的两种. (void)animateWithDuration:(NSTimeInterval)duratio…

[转]Ext Grid控件的配置与方法

http://www.blogjava.net/wangdetian168/archive/2011/04/12/348651.html 1、Ext.grid.GridPanel 主要配置项&#xff1a; store&#xff1a;表格的数据集 columns&#xff1a;表格列模式的配置数组&#xff0c;可自动创建ColumnModel列模式 autoExpandColumn&#xff1a;自动充…

永久设置SecureCRT的背景色和文字颜色方案

对于默认的连接颜色感觉不舒服&#xff0c;一通乱搞&#xff0c;总结出这些。 一、对于临时设置&#xff0c;可以如下操作&#xff1a; 首先options -- session - appearance 此处可以设置临时的窗口背景&#xff0c;字体颜色&#xff0c;大小等等&#xff0c;为什么说是临时&a…

利用Procdump+Mimikatz获取Windows帐户密码

0x01 前言&#xff1a; 前段时间拿下一个网站的shell&#xff0c;很幸运的是直接就是System权限&#xff0c;结果发现执行添加用户命令并不能成功回显 看了下系统进程&#xff0c;原来是开启了360的主动防御&#xff0c;奈何也不会做免杀&#xff0c;上传exp运行就被杀&#x…

一个逻辑清晰的购物车模型

效果图 2017-03-25 18.28.23.gifGitHub: https://github.com/lll1024/JVShopcart 说明 这是一个具备常规功能并方便改造的购物车模型 一共包含五个模块&#xff1a; JVShopcartViewController: 购物车控制器 负责协调Model和View 只有100多行代码JVShopcartFormat: 负责网络请求…

Nginx基本配置、性能优化指南

转载自&#xff1a;http://www.chinaz.com/web/2015/0424/401323.shtml 大多数的Nginx安装指南告诉你如下基础知识——通过apt-get&#xff0c;或yum安装&#xff0c;修改这里或那里的几行配置&#xff0c;好了&#xff0c;你已经有了一个Web服务器了&#xff01;而且&#xff…

关于批量修改AD域用户的脚本

最近几天帮人弄了个脚本&#xff0c;是修改域用户属性的脚本&#xff0c;今天看到徐火军写的 关于批量修改用户属性 脚本&#xff0c;觉得有必要把我的成果分享给大家。什么都不说了&#xff0c;上脚本&#xff1a; Dim oFSO, oTF, iDim sLineDim sLoginName 用户批量文件Const…

Python multiprocess 多进程模块

转发&#xff1a;http://www.langzi.fun/Python multiprocess 多进程模块.html 需要注意的是&#xff0c;如果使用多线程&#xff0c;用法一定要加上if __name____main__:(Python中的multiprocess提供了Process类&#xff0c;实现进程相关的功能。但是它基于fork机制&#xff…

PHP正则数组

<?php //正则表达式//斜杠代表定界符 /^$///$str "好厉害18653378660了hi请勿嫁得好15165339515安徽dah矮冬瓜 拍行业大概啊好广东也欺负偶怕哈";//$reg "/(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}/";//echo preg_repl…