有时候需要处理大量的数据,且这些数据又存在于excel表格内,在平时的时候,我是非常喜欢这样的数据的,因为只要是excel表格内的数据,处理起来的方法就很方便。也可能我平时遇见的数据总是以一种杂乱无章的状态呈现出来,因此只要遇见存在于某个数据库内的数据,就满心地喜欢,瞬间就有很有条理的感觉,如下:如果要处理这么几堆数据,单凭一个excel数据操作用的不怎么地的程序员来说,要想从里面获取简单直观的数据,还是不太能一下子就弄出来的。

因此,只要是天天写程序的人,就会想各种满足自己懒惰心理的办法,来发挥计算机处理数据的巨大优势的,在这里用一个简单的winform,只需要拖入两个dataview控件,就能看见需要的数据,然后导出相应的类型

其实当把这个界面做完以后,我发现我的工作实在是多余,按照别人的要求,这里的需求只是按照下面的gridview报出机票类型分别为ET等的集中PNR就可以了,不过既然都画上了,再去掉不是就浪费了去掉的时间了么,于是简单的代码就像下面这样了。

//一共是两个按钮的单击事件,第一个是读取xls文件,下面的小代码添加了很多注释
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();//首先根据打开文件对话框,选择excel表格
ofd.Filter = "表格|*.xls";//打开文件对话框筛选器
string strPath;//文件完整的路径名
if (ofd.ShowDialog() == DialogResult.OK)
{
try
{
strPath = ofd.FileName;
string strCon = "provider=microsoft.jet.oledb.4.0;data source=" + strPath + ";extended properties=excel 8.0";
//关键是红色区域
OleDbConnection Con = new OleDbConnection(strCon);//建立连接 //绑定订单信息
string strSql = "select * from[Sheet1$]";//表名的写法也应注意不同,对应的excel表为sheet1,在这里要在其后加美元符号$,
并用中括号
OleDbCommand Cmd = new OleDbCommand(strSql, Con);//建立要执行的命令
OleDbDataAdapter da = new OleDbDataAdapter(Cmd);//建立数据适配器
DataSet ds = new DataSet();//新建数据集
da.Fill(ds, "Orders");//把数据适配器中的数据读到数据集中的一个表中(此处表名为Orders,可以任取表名)
//指定datagridview1的数据源为数据集ds的第一张表(也就是shyman表),也可以写ds.Table["Orders"]
dataGridView1.DataSource = ds.Tables[];//数据源的绑定 //绑定订单明细信息
string strSql1 = "select * from[Sheet2$]";
OleDbCommand Cmd1 = new OleDbCommand(strSql1, Con);//建立要执行的命令
OleDbDataAdapter da1 = new OleDbDataAdapter(Cmd1);//建立数据适配器
DataSet ds1 = new DataSet();//新建数据集
da1.Fill(ds1, "Details");//把数据适配器中的数据读到数据集中的一个表中(此处表名为Orders,可以任取表名)
dataGridView2.DataSource = ds1.Tables[];
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);//捕捉异常
}
}
}
//这个按钮的单击事件是根据输入到类型框中的字符串获取当前列或者行的PNR之后导出到txt文件中。
private void ExportPNR_Click(object sender, EventArgs e)
{
string fileName = @"d:\"+Type.Text+".txt";
var PNRList = new List<string>(); //生成一个big endian Unicode编码格式的文本文件 StreamWriter sw = new StreamWriter(fileName, false, Encoding.GetEncoding("GB2312"));
//你可以试试其他编码,比如Encoding.GetEncoding("GB2312")或UTF8
sw.WriteLine();
sw.WriteLine("导出的PNR类型:"+Type.Text);
sw.WriteLine();
for (int i = ; i < ; i++)
{
//var PNR = "";
//sw.WriteLine(dataGridView2.Rows[i].Cells[1].Value.ToString());
//for (int j = 0; j < dataGridView2.Rows[i].Cells.Count-1; j++)
//{
// PNR += dataGridView2.Rows[i].Cells[j].Value.ToString() + " ";
//}
////写入订单记录
//sw.WriteLine(PNR);
//sw.WriteLine("订单明细---------------开始");
////写入订单详细记录
// for (int m = 0; m < dataGridView1.Rows.Count - 1; m++)
// if (dataGridView1.Rows[m].Cells[0].Value.ToString().Trim() ==
dataGridView2.Rows[i].Cells[1].Value.ToString().Trim())
// {
// var PNR_Details = "";
// for (int n = 0; n < dataGridView1.Rows[m].Cells.Count - 1; n++)
// {
// PNR_Details += dataGridView1.Rows[m].Cells[n].Value.ToString()+" ";
// }
// sw.WriteLine(PNR_Details);
// } // sw.WriteLine("订单明细---------------结束");
//代码注释的部分,是另外一种的txt文件中的显示方式。当然不是以某个类型的名字命名的txt文件。这一段代码就同时用到了两个gridview,一个是订单表,
一个是订单明细表,两者之间是一对多的关系,本来以为要导出两个表的关系来,后来发现并不需要,于是简单的导出一个表的按某个字段简单查询的某些字段而已。
for (int j = ; j < dataGridView1.Rows[i].Cells.Count-; j++)
{
if (dataGridView1.Rows[i].Cells[j].Value != null)
{
var PNR = dataGridView1.Rows[i].Cells[].Value.ToString();
if (PNR.Contains(Type.Text))
PNRList.Add(dataGridView1.Rows[i].Cells[].Value.ToString());
}
}
}
foreach (var item in PNRList.Distinct())
{
sw.WriteLine(" " + item);
} sw.Write("\r\n");
sw.Close();
MessageBox.Show("导出数据成功,PNR位于d:\a.txt文件下!");
}

dataview将excel表格的数据导出成txt文件的更多相关文章

  1. 安卓端数据导出成txt文件

    toExport() { if (this.dataList == false) { this.$createDialog({ type: "alert", content: &q ...

  2. 把mysql的数据导出成txt

    把mysql的数据导出成txt select a from b into outfile '/sqlfile/a.txt'; my.ini里需要设置secure_file_priv = d:/sqlf ...

  3. php 读取网页源码 , 导出成txt文件, 读取xls,读取文件夹下的所有文件的文件名

    <?php // 读取网页源码$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLO ...

  4. es实战之数据导出成csv文件

    从es将数据导出分两步: 查询大量数据 将数据生成文件并下载 本篇主要是将第二步,第一步在<es实战之查询大量数据>中已讲述. csv vs excel excel2003不能超过6553 ...

  5. 数据库数据导出成XML文件

    在数据库中,怎样把库中的数据导出XML文件, sql语句如下: SELECT *  FROM 表名 FOR XML AUTO, ELEMENTS

  6. Excel文档数据转成Plist文件

    有时候我们需要导入大量数据到App中静态数据,但数据又是存在Excel中,怎么办? 第一,复制数据粘贴到一个.txt文本文档中 第二,就是撸代码了 比如,我需要导入的数据表有2列字段,name和bar ...

  7. vue.js纯前端处理如何将后台返回来的csv数据导出成csv文件

    需要实现一个下载csv文件的功能,但后台没有对这个下载文件进行处理,而是将csv数据传给前台而已,需要前台做一下处理. 这是按钮的代码: <a> <el-button size=&q ...

  8. plsql 把数据导出成为 .sql文件,记住了

    今天上午,同事 提醒我.可以直接把数据导出成 .sql 文件,类似于 反编译.见下图

  9. man手册导出成txt,pdf,html的一些小技巧

    经常man一些shell命令,有时候有想导出来编辑或注释一下,所以要导出.方法有很多种,根据自己的实际需要觉得比较实用的记录下分享一下. 1.导出成txt man –t bash |col –b &g ...

随机推荐

  1. ImageUtil(验证码数据生成工具类)

    登录界面时,常常会使用到验证码图片生成,程序如下: package util; import java.awt.Color; import java.awt.Font; import java.awt ...

  2. NGUI BUG /各种坑

    以下为:NGUI3.6具体使用过程中碰到的 各种BUG /各种坑 备忘 1.UIToggle 使用UIToggle组件实现多个tab标签互斥,如果是在代码中动态的设置显示某个tab标签对应的内容,则需 ...

  3. 托管项目到github

    将项目托管到github上面其实很简单,主要有以下几个步骤: 1.注册github账号 2.创建一个新的respository:命名这个respository(假设名字为Test),选择权限 3.创建 ...

  4. DQL、DML、DDL、DCL的概念与区别

    SQL(Structure Query Language)语言是数据库的核心语言. SQL的发展是从1974年开始的,其发展过程如下:1974年-----由Boyce和Chamberlin提出,当时称 ...

  5. ue4 shooterGame 第一步 搭建git linux服务器

    1.分别在linux(服务器)上安装git.和openssh服务, 在windows(客户机)上安装cygwin,模拟linux环境以及安装windows git客户端. 2.windows的cygw ...

  6. Django模板系统——过滤器

    转自:https://www.douban.com/note/145065606/  <省得每次都得去翻麻烦> 过滤器,变量的显示形式的改变一.形式:小写{{ name | lower } ...

  7. Android studio debug模式获取变量的值

    打断点.debug模式运行,Console界面旁边的Debugger界面,或者在变量上右键add to watches

  8. mysql.connector操作mysql的blob值

    This tutorial shows you how to work with MySQL BLOB data in Python, with examples of updating and re ...

  9. 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)

    两种原因: 第一种为程序的运行以平台系统位数不匹配,第二种则是该死的VS整出来的... 一般在下面三种情景下会发生. 1.64位系统上C#调用32位的C++ *.dll 2.64位系统上IIS发布含有 ...

  10. 伟大的GCD和NSOperationQueue

    一. GCD GCD中最重要的两个东西 任务 和 队列 任务就是一段代码(用来缓存,下载,计算等操作) 队列从大的方面分为两个队列:主队列(串行队列)和 自己创建的队列(串行,和并行) 主队列中: 在 ...