三章 应用

20节
客户表登陆

//动软--单表--Models
--新建.net项目--简单三层管理--DBUtity--DbHelper.cs

21节
客户表数据读取

增加 CEnterprise(企事业单位;事业),CBirthday

22-24节
客户表添加、修改、删除

;select @@IDENTITY //返回刚插入的id

25节
补充MD5

using System.Security.Cryptography;

byte[] inBytes=Encoding.Default.GetBytes(str);
MD5 md5=new MD5CryptoServiceProvider();
byte[] outBytes=md5.ComputeHash(inBytes);
string lastStr=BitConverter.ToString(outBytes).Replace("-","");

26节
Excel简介

//18数字默认右边,可以选择存储格式
Workbook--sheet--row--cell
//123前面加'123 变成以文本形式保存

net程序处理Excel的技术:
OLE Automation: 微软提供的,必须装Excel
Microsoft.Jet.OleDb: 微软提供的,不用装Excel
OpenXML: 只能处理xlsx docx pptx(为什么加个x,因为office2007及以后都支持xml打开文件,易于保存文件格式)
NPOI: 程序员自己开发的,开源; 不依赖Excel,节省了资源,没有安全性、性能的问题;
在ASP.NET中最适合,因为不用单独开一个进程就可以来处理Excel文件; 只能处理xls,不支持xlsx,(但现在新版本也可以支持xml打开的xlsx)

//百度--npoi--开源中国制作的npoi

27节
NPOI读数据

(姓名,年龄,联系方式,邮箱)
//Sheet右键改名字

//新建一个Console项目 NPOITest.csProj

//1 首先引入npoi操作的程序集
引用 NPOI.dll Ionic.Zip.dll
using NPOI.SS.UserModel; //包含对excel进行操作的方法
using NPOI.HSSF.UserModel; //包含excel每个sheet的属性

using (Stream stream = new FileStream("workbook1.xls", FileMode.Open))
{
IWorkbook workbook = new HSSFWorkbook(stream); //根据流实例化一个workbook
//Console.WriteLine(workbook.NumberOfSheets); //通过索引获得sheetName
for (int i = 0; i < workbook.NumberOfSheets;i++ )
{
ISheet sheet = workbook.GetSheetAt(i); //在指定index处获得sheet对象
Console.WriteLine(sheet.SheetName);
//获得row
//Console.WriteLine(sheet.LastRowNum);
for (int j = 0; j < sheet.LastRowNum;j++ )
{
IRow row = sheet.GetRow(j);
//获得cell
List<ICell> listICells = row.Cells; //获得行的所有cell对象
foreach(ICell cell in listICells)
{
Console.Write(cell.ToString() + "\t");
}
Console.WriteLine();
}
Console.WriteLine();
}
}

28节
NPOI写入数据

//创建一个workbook
IWorkbook workbook = new HSSFWorkbook();
ISheet sheet = workbook.CreateSheet("如鹏"); //创建sheet
IRow row = sheet.CreateRow(0); //创建row
ICell cell = row.CreateCell(0); //创建cell
cell.SetCellValue("rocky");
cell.SetCellType(CellType.STRING); //设置cell数据类型
//
using(Stream stream=File.Open("",FileMode.OpenOrCreate))
{
workbook.Write(stream);
}
Console.WriteLine("ok");

29节
项目导出

DAL:
CustomerInfoesToExcel()
//查询数据表
//创建workbook
//创建sheet
//每个reader.Read() 或dt.Rows 创建一个行
//创建首行
IRow headerRow=sheet.CreateRow(0);
for(int i=0;i<reader.FieldCount;i++)
{
//string fileName=reader.GetName(i);
ICell cellName=headerRow.CreateCell(i);
cellName.SetCellValue(reader.GetName(i));
}
int index=1;
while(reader.Read())
{
IRow row=sheet.CreateRow(index);
for(int i=0;i<reader.FieldCount;i++)
{
ICell cell=row.CreateCell(i);
cell.SetCellValue(reader.GetValue(i).ToString());
}
index++;
}
reader.Close();
using(Stream stream=File.Open("",FileMode.OpenOrCreate))
{
workbook.Write(stream);
}

30-31节
项目导入 -----------------------------------------------------------------------------------------------------------------------(*)

public void CustomerInfoesFormExcel()
{
string sql = @"insert into T_CustomerInfo(CName,CPwd,CNumber,CGender,CCompany,CDate,CMobile,CEmail,CAddress,DelFlag)
values(@CName,@CPwd,@CNumber,@CGender,@CCompany,@CDate,@CMobile,@CEmail,@CAddress,@DelFlag)";
//SqlParameter[] param = {
// new SqlParameter(){ParameterName="@CName",Value=model.CName},...
// };

//流读取
using(Stream stream=File.Open("workbookWrite.xls",FileMode.Open))
{
IWorkbook workbook = new HSSFWorkbook(stream);
ISheet sheet = workbook.GetSheetAt(0);

string[] parameterName = new string[sheet.GetRow(0).LastCellNum - 1]; //可以拿到最外面

//执行每一行
for (int i = 0; i <= sheet.LastRowNum;i++ )
{
IRow row = sheet.GetRow(i);
//初始化sql参数
SqlParameter[] param = new SqlParameter[row.LastCellNum - 1];
for (int j = 0; j < param.Length; j++)
{
param[j] = new SqlParameter();
}

if (i == 0) //首行
{
for (int j = 1; j < row.LastCellNum; j++)
{
ICell cell = row.GetCell(j);
parameterName[j-1] = "@" + cell.StringCellValue;
}
}
else //非首行的数据行
{
for (int j = 1; j < row.LastCellNum; j++)
{
ICell cell = row.GetCell(j);
param[j - 1].ParameterName = parameterName[j - 1];
param[j-1].Value = cell.ToString();
}
SqlHelper.ExecuteNonQuery(sql, param);
}
}
}
}

32节
汉字转换拼音

Visual Studio International Pack
Readme.html 说明书

CHnConversionPinYins.cs
引用 ChnCharInfo.dll
using Microdoft.International.Converters.PinYinConverter

ChineseChar chn=new ChineseChar("如"); //实例化一个汉字字符,构造函数传入一个汉字
//foreach(var item in chn.Pinyins) //通过属性拿到拼音
//{
// Console.WriteLine(item); //(RU2贰声) (RU5没有声调) (未知拼音)
//}
string pinyin=chin.Pinyins[0].Substring(0,chin.Pinyins[0].Length-1)
Console.WriteLine(pinyin);

foreach(cahe c in str){...} //遍历str中每个字符

33节
简体转繁体

引用 ChineseConverter
using Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter;

string traditionStr = ChineseConverter.Convert("闯将明月光", ChineseConversionDirection.SimplifiedToTraditional);

34节
递归初阶

//方法体自己调用自己
StackOverflowException
//例1 累加

35节
Treeview

//树状数据结构

TreeNode node=new TreeNode("Adolph")
TreeNode n1=new TreeNode("好人");
TreeNode n2=new TreeNode("帅哥");
node.Nodes.Add(n1);
node.Nodes.Add(n2);
treeView1.Nodes.Add(node);

36-37节
TreeView省市绑定、递归绑定城区

GetAreaList(int AreaPId=0) //如果传参数,则为参数值;不传参,就是0

//加载节点
private void LoadTree()
{
List<AreaFull> list = areaBll.GetAreaByAreaPid();
foreach(AreaFull area in list)
{
TreeNode node = new TreeNode(area.AreaName);
node.Tag = area.AreaId;
BindCityInfo(node,area);
treeView1.Nodes.Add(node);
}
}

//绑定城市节点
private void BindCityInfo(TreeNode node,AreaFull area)
{
List<AreaFull> list = areaBll.GetAreaByAreaPid(area.AreaId);
foreach(AreaFull city in list)
{
TreeNode nodeCity = new TreeNode(city.AreaName);
nodeCity.Tag = city.AreaId;
BindCityInfo(nodeCity,city); //可以继续绑定加载城市下一级得区
node.Nodes.Add(nodeCity);
}
}

38节
递归删除

string areaName = treeView1.SelectedNode.Text
int id = (int)treeView1.SelectedNode.Tag

//根据id删除
private void DeleteNodesById(int id)
{
//如果是省,查询所有城市
List<AreaFull> list = areaBll.GetAreaByAreaPid(id);
//遍历城市,根据每个城市id查询所有城区
foreach(AreaFull area in list)
{
DeleteNodesById(area.AreaId);
//遍历城区,根据id删除城区
}
areaBll.DeleteAreaFullById(id); //从最里面往外删除
}

39节
编辑节点

treeView1_DoubleClick()
TreeNode node=treeView1.SelectedNode;
node.BeginEdit(); //设置为可编辑状态

BtnEditNode_Click()
nodeName
AreaId
//根据id更新地区节点

40节
添加节点

//选中一个节点,通过文本框,让用户输入一个节点,把这个节点添加到该节点的子节点中

//选中节点
//获得nodeName nodeId
//插入 insert into T(AreaName,AreaPid)

41节
三层架构总结

//CRUD 增删改查+MD5
//NPOI Excel导入导出
//Treeview 树节点的增删改查
BLL中ChangePassword

homework中最后一题:

DirectoryInfo dir=new DirectoryInfo("c:\soft\a"); //实例化一个指定目录
string dirName=dir.Name; //获得目录名称
dir.GetDirectories() //获得目录下的所有直接目录
dir.GetFiles() //获得目录下的所有直接文件

//最后一题作业:---> 遍历电脑指定文件夹下所有的文件和文件夹,加载到一个树控件中图片见附件

//加载树节点
private void LoadTree()
{
DirectoryInfo dir = new DirectoryInfo(@"G:\RuPeng_YZK_150107"); //实例化这个文件夹
string dirName = dir.Name;
TreeNode nodeRoot = new TreeNode(dirName);
BindDirectoryAndFile(nodeRoot, dir);
treeView1.Nodes.Add(nodeRoot);
}

//递归绑定加载子目录和子文件,nodeRoot是父节点
private void BindDirectoryAndFile(TreeNode nodeRoot, DirectoryInfo dir)
{
//获得子目录集合
DirectoryInfo[] directs = dir.GetDirectories();
foreach (DirectoryInfo direct in directs)
{
TreeNode node = new TreeNode(direct.Name);
nodeRoot.Nodes.Add(node);
//每一级子目录加入父节点后调用下一级
BindDirectoryAndFile(node, direct);
}
//获得子文件集合
FileInfo[] files = dir.GetFiles();
foreach (FileInfo file in files)
{
TreeNode node = new TreeNode(file.Name);
nodeRoot.Nodes.Add(node);
}
}

C# Application Excel TreeView的更多相关文章

  1. NET平台下的Excel编程|C#操作Excel|Application和ApplicationClass的联系和区别

    NET平台下的Excel编程|C#操作Excel|Application和ApplicationClass的联系和区别 1. Interop含义Interop是互操作的含义.Microsoft.Off ...

  2. 【基于WinForm+Access局域网共享数据库的项目总结】之篇二:WinForm开发扇形图统计和Excel数据导出

    篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...

  3. 关于 IIS 中 Excel 访问的问题

    关于 IIS 上 Excel 文件的访问, 一路上困难重重, 最后按以下步骤进行设置, 可在 IIS 中正常使用! 1. 引用及代码: 1). 项目中添加 Excel 程序集引用(注意: 从系统 CO ...

  4. ASP.NET中GridView数据导出到Excel

    /// <summary> /// 导出按钮 /// </summary> /// <param name="sender"></para ...

  5. C# 读取EXCEL文件的三种经典方法

    1.方法一:采用OleDB读取EXCEL文件: 把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下: public DataSet ExcelToDS(string Path) { stri ...

  6. Npoi导入导出Excel操作

    之前公司的一个物流商系统需要实现对订单的批量导入和导出,翻阅了一些资料,最后考虑使用NPOI实现这个需求. 在winform上面实现excel操作:http://www.cnblogs.com/Cal ...

  7. Asp.net实现直接在浏览器预览Word、Excel、PDF、Txt文件(附源码)

    功能说明 输入文件路径,在浏览器输出文件预览信息,经测试极速(Chrome).IE9.Firefox通过 分类文件及代码说明  DemoFiles 存放可测试文件 Default.aspx  启动页 ...

  8. .NET导入导出Excel方法总结

    最近,应项目的需求,需要实现Excel的导入导出功能,对于Web架构的Excel导入导出功能,比较传统的实现方式是: 1)导入Excel:将Excel文件上传到服务器的某一文件夹下,然后在服务端完成E ...

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

    其实想在datagridview中显示excel表格中的数据跟读取数据库中的数据没什么差别,只不过是创建数据库连接的时候连接字段稍有差别. private void btnShow_Click(obj ...

随机推荐

  1. Kubernetes addon-manager

    Addon-manager 附加组件管理器(Addon-manager)是运行在 Kubernetes 集群 Master 节点.用来管理附加组件(Addons)的服务.它管理着 $ADDON_PAT ...

  2. 爬虫之MongoDB

    一.简介 MongoDB是一款强大.灵活.且易于扩展的通用型数据库 1.易用性 MongoDB是一个面向文档(document-oriented)的数据库,而不是关系型数据库. 不采用关系型主要是为了 ...

  3. html5学习笔记(forms)

    forms api 规范 新的输入型控件新的函数和特性 新增input 类型 <input type="tel"> tel 电话号码email 电子邮箱URL 网页ur ...

  4. Bellman-Ford算法 O(NE)

    Bellman-Ford算法 O(NE) 思路:枚举n-1次所有边,通过枚举所有边,将所有和已知点相连的点都设为已知,初始时起点为已知点. ;i<=n-;i++){ //n-1是次数,枚举n-1 ...

  5. SSAS——基础--cube

    SSAS——基础   一.Analysis Services Analysis Services是用于决策支持和BI解决方案的数据引擎.它提供报表和客户端中使用的分析数据. 它可在多用途数据模型中创建 ...

  6. java从小白到架构师大牛必看书籍

    一.基础类 1.<ThinkingJava>,入门第一位是建立正确的概念. 2.<Core Java>,我没系统读过,这本书更贴近实践,更多API的介绍,同样,更新也更频繁. ...

  7. Node的异步I/O

    node是单线程非阻塞异步I/O的模式. 阻塞I/O:完成整个数据获取的过程: 非阻塞I/O:不带数据,直接立即返回,要获取数据,还需通过文件描述符再次读取. node完成整个异步I/O的有事件循环. ...

  8. python中set类型总结

    set的创建无非有两种方式: 一 直接使用{}创建新的set并初始化 例如: set1 = {1,2,3,"good news",(1,2,3)} #声明的时候可以包含元组,但不能 ...

  9. Adobe 产品更新直接下载链接

    mac:http://prodesigntools.com/adobe-cc-2015-updates-links-mac.html win:http://prodesigntools.com/ado ...

  10. iostat相关参数说明——await:平均每次设备I/O操作的等待时间 (毫秒),如果%util接近 100%,说明产生的I/O请求太多

    iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视.它的特点是汇报磁盘活动统计情况,同时也会汇报出 CPU使用情况.同vmstat一样, ...