您的位置:首页 > 数据库

C#链接Excel , sql

2017-12-21 12:19 363 查看
这是以我课程设计为背景写哒博客。

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

然后爬下来之后右键项目有一个打开文件夹,有一个.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#完成后的效果还是挺好的。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C#