C#链接Excel , sql

这是以我课程设计为背景写哒博客。

先用火车采集器把数据从相应网站上爬下来,(电商网站一般都不让爬,所以网站选择比较困难),我做的项目是旅游调查,所以我爬了途牛。

然后爬下来之后右键项目有一个打开文件夹,有一个.db3文件,采集下来的数据都在这个文件里,但是这个文件需要下载特殊的软件才能打开,一般是用sqlite,我用的database。(打开之后是左边一列的目录,要自己用查询语句写内容的)


然后就可以全选表格导出到Excel了,默认文件名为Content.xlse。

然后打开VS2013,新建一个C#的demo,简单布局一下。(我要实现的是,输入出发地和目的地,点击查询可以在下面列表获得相应的旅游线路)


C#链接Excel的主要代码:

(其中

string strConnect = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + excelFilePath + ";Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'"; 
这个要看具体的版本,还有可能是缺损了一个安装包,可以百度一下报错的信息,就可以下载那个安装包了)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace demo
{
    public partial class Form1 : Form
    {
        string excelFilePath = "Content.xlsx";
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
        }
        public DataTable readExcel(string excelFilePath)
        {
            try
            {
                string strConnect = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + excelFilePath + ";Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'";             
                OleDbConnection oleDbConnect = new OleDbConnection(strConnect);

                oleDbConnect.Open();
                string sql = "SELECT * FROM [Sheet1$] WHERE 出发地 = '" + textBoxStart.Text + "'AND 目的地='" + textBoxEnd.Text + "'";
                OleDbDataAdapter oleDaExcel = new OleDbDataAdapter(sql, oleDbConnect);

                DataSet oleDsExcel = new DataSet();
                oleDaExcel.Fill(oleDsExcel, "Sheet1");
                oleDbConnect.Close();
                return oleDsExcel.Tables["Sheet1"];
            }
            catch (Exception e)
            {
                MessageBox.Show("数据绑定Excel失败,失败原因:" + e.Message);
                return null;
            }
        }
        public void selectExcel()
        {
            try
            {
                if (textBoxStart.Text != "" )
                {
                    DataTable dt;
                    dt = readExcel(excelFilePath);
                    dataGridView1.DataSource = dt;
                }
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("数据筛选Excel失败,失败原因:" + ex.Message);
            }
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            selectExcel();
        }

        private void buttonOK_Click(object sender, EventArgs e)
        {
            OpenFileDialog openExcel = new OpenFileDialog();
            openExcel.InitialDirectory = @"";
            openExcel.Filter = "Excel文件|*.xlsx|Excel文件|*.xls";
            openExcel.Title = "打开Excel文件";

            if (openExcel.ShowDialog() == DialogResult.OK)
            {
                excelFilePath = openExcel.FileName;//获得文件的全路径
                DataTable dt;
                dt = readExcel(excelFilePath);
                dataGridView1.DataSource = dt;
            }
            else
            {
                MessageBox.Show("Excel 文件读取失败 ");
            }
        }
    }
}

然后用sql链接C#,这个代码比Excel简单多了,但是问题在于sql本身的配置,我的sql是2016的,一开始不作任何处理时,C#报错是“访问服务器失败,请打开远程连接balabala...”,然后我百度了一下要打开很多东西。

先找到配置管理器,把所有协议都启用。(客户端协议,SQLEXPRESS的协议,客户端协议都要)


C#链接数据库主要代码:

(其中

String connsql = "server=服务器名称;database=数据库名称;integrated security=SSPI";

 private void buttonOK_Click(object sender, EventArgs e)
        {
            String connsql = "server=DESKTOP-9DAE121\\SQLEXPRESS;database=lzy;integrated security=SSPI"; // 数据库连接字符串,database设置为自己的数据库名,以Windows身份验证            
            try
            {
                using (SqlConnection conn = new SqlConnection())
                {
                    conn.ConnectionString = connsql;
                    conn.Open(); // 打开数据库连接

                    string sql = "SELECT * FROM travel WHERE 出发地 = '" + textBoxStart.Text + "'AND 目的地='" + textBoxEnd.Text + "'"; // 查询语句

                    SqlDataAdapter myda = new SqlDataAdapter(sql, conn); // 实例化适配器

                    DataTable dt = new DataTable(); // 实例化数据表
                    myda.Fill(dt); // 保存数据 

                    dataGridView1.DataSource = dt; // 设置到DataGridView中

                    conn.Close(); // 关闭数据库连接
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("错误信息:" + ex.Message, "出现错误");
            }

        }

※ 我sql的数据是用Excel导入的,具体步骤如下:

1.先在sql里新建表,输入变量,(和Excel第一行的列标题相同)


2.右键数据库-任务-导入数据,然后会有一系列的指导操作。

这里选择Excel版本,可能会缺损安装包,和之前Excel导入到C#的时候一样。


3.下一步,选择导入到数据库。


4.下一步


5.勾选要导入的表,然后点击预览就可以看到啦。



以上就是所有步骤啦,C#完成后的效果还是挺好的。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值