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         }    }  

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

时间: 2024-11-08 11:40:54

C# 实现Oracle中的数据与Excel之间的转换的相关文章

MyBatis在Oracle中插入数据并返回主键的问题解决

引言:  在MyBatis中,希望在Oracle中插入数据之时,同时返回主键值,而非插入的条数... 环境:MyBatis 3.2 , Oracle, Spring 3.2   SQL Snippet in XML Configuration: <insert id="insertSelective" parameterType="com.jxxx.p2pp.model.UUserInfo"> <selectKey resultType="

利用Aspose.Cells完成easyUI中DataGrid数据的Excel导出功能

我准备在项目中实现该功能之前,google发现大部分代码都是利用一般处理程序 HttpHandler实现的服务器端数据的Excel导出,但是这样存在的问题是ashx读取的数据一般都是数据库中视图的数据,难免会含有方便操作的 主键ID这列的记录.现在项目需要在easyUI的DataGrid中显示的数据能全部导出Excel,包括DataGrid中的中文标题,其他的统统不 要. 完成该功能所需的工具和环境:Newtonsoft.Json序列化和反序列化类库.easyUI前端UI框架.HttpHandl

C#读取Excel表格数据到DataGridView中和导出DataGridView中的数据到Excel

其实想在datagridview中显示excel表格中的数据跟读取数据库中的数据没什么差别,只不过是创建数据库连接的时候连接字段稍有差别. private void btnShow_Click(object sender, EventArgs e) { OpenFileDialog fd = new OpenFileDialog();//首先根据打开文件对话框,选择excel表格 ofd.Filter = "表格|*.xls";//打开文件对话框筛选器 string strPath;/

oracle中的数据对象

oracle中的数据对象有表.视图.索引.序列等 表的相关操作 1.创建表 方式一: 方式二:create table person( create table person1 id number(18), as name varchar2(5), select * from person age number(3), sex varchar2(4) ); 2.删除表 方式一:只会删除表中的内容,不会删除表结构truncate delete 方式二:删除表结构truncate table per

Sqoop_具体总结 使用Sqoop将HDFS/Hive/HBase与MySQL/Oracle中的数据相互导入、导出

一.使用Sqoop将MySQL中的数据导入到HDFS/Hive/HBase 二.使用Sqoop将HDFS/Hive/HBase中的数据导出到MySQL 2.3 HBase中的数据导出到mysql 眼下没有直接的命令将HBase中的数据导出到MySQL.但能够先将HBase中的数据导出到HDFS中.再将数据导出到MySQL. 三.使用Sqoop将Oracle中的数据导入到HDFS/Hive/HBase 以下仅仅给出将Oracle中的数据导入HBase,其它情况下的命令行选项与MySQL的操作相似

.Net中导出数据到Excel

一.asp.net中导出Excel的方法: 在asp.net中导出Excel有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在浏览器上:一种是将文件直接将文件输出流写给浏览器.在Response输出时,t分隔的数据,导出Excel时,等价于分列,n等价于换行. 1.将整个html全部输出Excel 此法将html中所有的内容,如按钮,表格,图片等全部输出到Excel中. Response.Clear();        Response.Buffer=   true;

详细总结 使用Sqoop将HDFS/Hive/HBase与MySQL/Oracle中的数据相互导入、导出

一.使用Sqoop将MySQL中的数据导入到HDFS/Hive/HBase 二.使用Sqoop将HDFS/Hive/HBase中的数据导出到MySQL 2.3 HBase中的数据导出到mysql 目前没有直接的命令将HBase中的数据导出到MySQL,但可以先将HBase中的数据导出到HDFS中,再将数据导出到MySQL. 三.使用Sqoop将Oracle中的数据导入到HDFS/Hive/HBase 下面只给出将Oracle中的数据导入HBase,其他情况下的命令行选项与MySQL的操作相似 O

在Oracle中更新数据时,抛出:ORA-01008: not all variables bound

在Oracle中更新数据时,抛出了一个 :ORA-01008 not all variables bound, 我的理解是不是所有的变量/参数都有边界,不懂: 后来知道了,原来是“不是所有变量/参数都确定”, 就是有些变量没有指定,缺少变量参数, 最后发现是因为在写三层时少写了一个"new OracleParameter(":ID",userinfo.ID);" 导致的.

如何用Excel直接查询Oracle中的数据(转)

将Oracle中查询的数据保存为Excel文件,通常使用的是PL/SQL Developer. 其实,Excel可直接写SQL语句查询Oracle中数据,在这里,用到ODBC驱动.详细步骤如下: 一.配置ODBC数据源 开始->控制面板->系统和安全->管理工具->ODBC数据源(可根据自己的情况选择32位还是64位). 因本机安装的是Oracle 11.2.0.4 64位,故选择ODBC数据源(64位),显示如下: 点击“添加”,选择“Oracle in OraDb11g_hom