C#在Excel的簡單操作--適用:與DB數據的簡單交互

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Data.OleDb;
using System.Data;
using System.Windows.Forms;

namespace WmsClient
{
    public class ExcelHelper
    {
        //Excel導入DataSet
        public static DataSet ExcelToDataSet()
        {
            DataSet dataSet = new DataSet();
            OpenFileDialog OFD = new OpenFileDialog();
            OFD.Filter = "Excel Files(.xls)|*.xls|All Files(*.*)|*.*";
            if (OFD.ShowDialog() == DialogResult.OK)
            {
                string strFileName = OFD.FileName;
                dataSet = ExcelToDataSet(strFileName);
            }
            return dataSet;
        }
        //Excel導入DataSet
        public static DataSet ExcelToDataSet(string filePath)
        {
            if (!File.Exists(filePath))
                throw new FileNotFoundException("文件不存在");
            bool isExcel2003 = filePath.EndsWith(".xls");
            string connectionString = string.Format(
                isExcel2003
                ? "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0;"
                : "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES\"",
                filePath);
            DataSet ds = new DataSet();
            using (OleDbConnection connection = new OleDbConnection(connectionString))
            {
                connection.Open();
                string sheetName = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null).Rows[0][2].ToString().Trim(); ;
                string commandText = "SELECT  * FROM [" + sheetName + "]";
                using (OleDbDataAdapter da = new OleDbDataAdapter(commandText, connection))
                {
                    da.Fill(ds);
                    connection.Close();
                }
            }
            return ds;
        }
        //DataGridView導出Excel
        public static void DataGridViewToExcel(DataGridView dgv)
        {
            //DataTableToExcel(dgv.DataSource as DataTable);//數據源為DataTable時適用

            SaveFileDialog dlg = new SaveFileDialog();
            dlg.Filter = "Execl files (*.xls)|*.xls";
            dlg.FilterIndex = 0;
            dlg.RestoreDirectory = true;
            dlg.Title = "保存為Excel文件";

            if (dlg.ShowDialog() == DialogResult.OK)
            {
                Stream myStream;
                myStream = dlg.OpenFile();
                StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.Default);
                string columnTitle = "";
                try
                {
                    //寫入標題列
                    for (int i = 0; i < dgv.ColumnCount; i++)
                    {
                        if (dgv.Columns[i].Visible)
                        {
                            if (columnTitle == "")
                            {
                                columnTitle = "\"" + dgv.Columns[i].HeaderText + "\"";
                            }
                            else
                            {
                                columnTitle += "\t" + "\"" + dgv.Columns[i].HeaderText + "\"";
                            }
                        }
                    }
                    sw.WriteLine(columnTitle);

                    //寫入內容列
                    for (int j = 0; j < dgv.Rows.Count; j++)
                    {
                        string columnValue = "";
                        for (int i = 0; i < dgv.Columns.Count; i++)
                        {
                            if (dgv.Columns[i].Visible)
                            {
                                string cellValue = dgv.Rows[j].Cells[i].Value == null ? "" : dgv.Rows[j].Cells[i].FormattedValue.ToString().Replace("\"", "‘");
                                if (columnValue == "")
                                {
                                    columnValue = "\"" + cellValue + "\"";
                                }
                                else
                                {
                                    columnValue += "\t" + "\"" + cellValue + "\"";
                                }
                            }
                        }
                        sw.WriteLine(columnValue);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
                finally
                {
                    sw.Close();
                    myStream.Close();
                }
            }
        }
        //DataTable導出Excel
        public static void DataTableToExcel(DataTable table)
        {
            SaveFileDialog dlg = new SaveFileDialog();
            dlg.Filter = "Execl files (*.xls)|*.xls";
            dlg.FilterIndex = 0;
            dlg.RestoreDirectory = true;
            dlg.Title = "保存為Excel文件";

            if (dlg.ShowDialog() == DialogResult.OK)
            {
                Stream myStream;
                myStream = dlg.OpenFile();
                StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.Default);
                string columnTitle = "";
                try
                {
                    //寫入標題列
                    for (int i = 0; i < table.Columns.Count; i++)
                    {
                        if (columnTitle == "")
                        {
                            columnTitle = "\"" + table.Columns[i].ColumnName + "\"";
                        }
                        else
                        {
                            columnTitle += "\t" + "\"" + table.Columns[i].ColumnName + "\"";
                        }
                    }
                    sw.WriteLine(columnTitle);

                    //寫入內容列
                    for (int j = 0; j < table.Rows.Count; j++)
                    {
                        string columnValue = "";
                        for (int i = 0; i < table.Columns.Count; i++)
                        {
                            string cellValue = table.Rows[j][i] == DBNull.Value ? "" : table.Rows[j][i].ToString().Replace("\"", "‘");
                            if (columnValue == "")
                            {
                                columnValue = "\"" + cellValue + "\"";
                            }
                            else
                            {
                                columnValue += "\t" + "\"" + cellValue + "\"";
                            }
                        }
                        sw.WriteLine(columnValue);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
                finally
                {
                    sw.Close();
                    myStream.Close();
                }
            }
        }
    }
}
 
时间: 2024-10-10 04:46:01

C#在Excel的簡單操作--適用:與DB數據的簡單交互的相关文章

FMDB與SQLite 數據庫應用示範:打做一隻簡單的電影資料庫 App

原文:http://www.appcoda.com/fmdb-sqlite-database/ 作者:GABRIEL THEODOROPOULOS 譯者:kmyhy 通常在 App 中使用數據庫并處理數據都會是一個重要和嚴肅的話題.在幾個月前我寫了一篇關於如何利用 SwiftyDB 來管理 SQLite 數據庫的文章.今天,我又提起數據庫這個話題,只不過這次我會介紹另一個庫.你也許聽說過了,它就是FMDB. 這兩個庫的功能都是一樣的,都是用來與 SQLite 數據庫打交道并允許你高效地管理你的

无法将类型为“Excel.ApplicationClass”的 COM 对象强制转换为接口类 型“Excel._Application”。此操作失败的原因是对 IID 为“{000208D5 -0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 加载类型库/DLL 时出错。 (异常来 自 HRESULT:

无法将类型为“Excel.ApplicationClass”的 COM 对象强制转换为接口类 型“Excel._Application”.此操作失败的原因是对 IID 为“{000208D5 -0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 加载类型库/DLL 时出错. (异常来 自 HRESULT:0x80029C4A (TYPE_E_CANTLOADLIBRARY)) 经过多般折腾,还是没什么更好的办法.

python实现对excel表的读写操作(一)

Part 1. 模块介绍: 使用python实现对excel表的读写操作有两个模块,分别为: 1. 对excel表读取模块 xlrd 0.9.3  :下载地址: https://pypi.python.org/pypi/xlrd 英文释意:The package is for reading data and formatting information from Excel files. 2. 对excel表写入模块 xlwt 0.7.5 : 下载地址:https://pypi.python.

C#Excel导出,导入操作

1.我们在开发操作中,经常会用到Excel操作,其中包括,Excel导入,Excel导出,附件的上传,下载,包括Excel动态导入,我们这里就不讲,主要讲Excel导入,导出操作,而动态的操作,只需要在原来基础上做修改即可.需求图: 2.具体代码实现: A:Excel导出,其中会因为Excel版本的不同导致导出的成败效果不同,具体情况具体分析解决: 1 #region//导出数据 2 /// <summary> 3 /// /导单 4 /// </summary> 5 /// &l

JEPLUS平台Excel批量导入的操作配置——JEPLUS软件快速开发平台

JEPLUS平台Excel批量导入的操作配置 JEPLUS平台支持Excel数据的批量导入,但是很多客户不明白批量导入怎么配置,今天这个笔记就简单说一下JEPLUS的Excel数据批量导入怎么来配置. 一.效果展示 二.Excel数据批量导入操作的配置过程 1.添加Excel数据批量导入操作需要的按钮 找到目标功能,添加业务需求说需要的按钮,操作如图: 2.为新添加的按钮编写业务所需要的JS事件 Excel数据批量导入时应该按照平台规定的模板来添加,首先还是为"下载模板"这个按钮添加J

WPS转换Excel格式如何进行操作

?       都用过WPS和Excel两种格式的文件了吧!那大家知道WPS转换Excel是如何进行操作的吗?要知道在WPS中制作的表格的话是在没有办法office中打开的,考虑到部分人对WPS操作不够熟练,在这里可以把WPS通过PDF转换器转换成Excel格式.那它的操作流程是怎样的呢?不妨看看下面小编是怎样操作的. 1.打开自己的电脑,先需要在电脑桌面上安装一款可以转换文件格式的工具,进入到百度中搜索迅捷PDF转换器进行安装. 2.进入到转换器中选择WPS文件转换栏目下的"文件转换Excel

ngnix適用與哪些場景

發起一個web請求,先經過ngnix,再到我們的應用服務(比如:tomcat),然後再去訪問我們的緩存服務(比如:redis)或者我們的數據庫(比如:mysql).最後提供基本的數據服務. 但是這裏有一個問題:我們的應用服務因爲要求開發效率非常高,所以它的運行效率是很低的.它的qps,或者tps,或者併發都是受限制的,所以我們需要把很多這樣的應用服務組成一個集羣. 向用戶提供高可用性.而一旦很多應用服務構成集羣的時候,我們就需要ngnix具有反向代理功能,可以把動態請求傳到給用戶.而很多應用構成

大數據下的適用(實利)思維

by 高煥堂 適用思維與實用思維很接近,但是幕後思維邏輯並不完全相同.兩者對大數據的運用角度也大異其趣.大家對實用思維(又稱實用主義)最常見的認知是胡適所說的:大膽假設.小心求證.這項求證包括實證(證實)與否証(證偽)兩種.因此,任何假说(Assumption or Hypothesis),只要它能夠為實驗所檢驗,當它具有這項設想的可能性時,只要我們對它提不出任何特別的反對理由(否證),那麼它就是可以接受的. 適用思維(又稱為實利主義)與實用思維最典型的區分是老子所說:無之以為用.有之以為利.其

nodejs對mongodb數據庫的增刪改查操作

首先要確保mongodb的正確安裝,安裝参照:http://docs.mongodb.org/manual/tutorial/install-mongodb-on-debian-or-ubuntu-linux 然後下載nodejs的mongodb的driver npm install mongodb 編寫一個測試的程序: 1 var mongodb = require('mongodb'); 2 var server = new mongodb.Server('localhost',27017,