ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: VBA万岁

[求助] VSTO入门问题集

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-12-12 13:17 | 显示全部楼层
VBA万岁 发表于 2015-12-12 13:15
另外,用笨办法做了一个省市二级联动的窗体,效果如下:

制作源码如下:

ExcelHelpTaskPane.rar

515.89 KB, 下载次数: 5

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-12-12 13:19 | 显示全部楼层
本帖最后由 VBA万岁 于 2015-12-14 09:52 编辑


参考帖子如下:
1、c# 做省市县联动
2、C# DropDownList省市联动

TA的精华主题

TA的得分主题

发表于 2015-12-12 14:25 | 显示全部楼层

必须放在桌面,这样也太大限制了吧
简单做了一个.xml数据只要在程序集上级目录中的"联动数据"文件夹中,就可以被读取.
联动数据是一次性载入.
你可以参考一下代码.
RelationDataManager:可以同时管理任意多个联动数据,只是简单制作,你可以修改成更复杂的联动.FileManager:里面就是用了之前说的,查找相对路径的主要方法.

ConsoleApp_联动测试.rar

163.69 KB, 下载次数: 11

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-12-12 16:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
excelhomesnake 发表于 2015-12-12 14:25
必须放在桌面,这样也太大限制了吧
简单做了一个.xml数据只要在程序集上级目录中的"联动数据"文件夹中,就 ...

保存先,慢慢学习消化。多谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-12-12 16:42 | 显示全部楼层

9

本帖最后由 VBA万岁 于 2015-12-14 10:47 编辑

9
VBA万岁 发表于 2015-11-15 12:16
受一个帖子(C#读取Excel数据表数据)的启示写出如下代码却仍出错:


七、如何用C#(数据库绑定的方法)读取Excel数据表数据?

(一)
comboBox控件读取数据库数据老是被提示“外部表不是预期的格式“?(详见见129楼)

再次用WindowsForm中的comboBox控件及DataGridView控件测试了一下6楼链接帖的方法,成功。效果如下:


P2015121201.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-12-12 16:48 | 显示全部楼层
VBA万岁 发表于 2015-12-12 16:42
七、如何用C#读取Excel数据表数据?


制作源码(呵呵!本人比较中意功能区,所以在部分测试都在附件项目中累积进行):

ExcelHelpTaskPane.rar

529.27 KB, 下载次数: 8

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-12-12 22:09 | 显示全部楼层

窗体的代码简化如下:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;

  9. namespace ExcelHelpTaskPane
  10. {
  11.     public partial class Form3 : Form
  12.     {
  13.         public Form3()
  14.         {
  15.             InitializeComponent();
  16.             string[] s ={"北京市","上海市","天津市","重庆市","香港","澳门","台湾省",
  17.                 "云南省","内蒙古","吉林省","四川省","宁夏","安徽省","山东省","山西省",
  18.                 "广东省","广西省","新疆","江苏省","江西省","河北省","河南省","浙江省",
  19.                 "海南省","湖北省","湖南省","甘肃省","福建省","西藏","贵州省","辽宁省",
  20.                 "陕西省","青海省","黑龙江省"};
  21.             for (int i = 0; i < s.Length; i++)
  22.             {
  23.                 tscboxPro.Items.Add(s[i]);
  24.             }
  25.             tscboxPro.SelectedIndex = 0;
  26.         }

  27.         private void tscboxPro_SelectedIndexChanged(object sender, EventArgs e)
  28.         {
  29.             tscboxCity.Items.Clear();//清空原来的地区值
  30.             changeCity(tscboxPro.SelectedIndex+1);
  31.         }

  32.         private void changeCity(int i)
  33.         {
  34.             //定义字符串保存各省份自治区直辖市地区
  35.             string[] s1 = { "北京市" };//北京市
  36.             string[] s2 = { "上海市" };//上海市
  37.             string[] s3 = { "天津市", "塘沽区" };//天津市
  38.             string[] s4 = { "奉节区", "重庆市", "涪陵区" };//重庆市
  39.             string[] s5 = { "香港" };//香港
  40.             string[] s6 = { "澳门" };//澳门
  41.             string[] s7 = { "台北市" };//台湾省
  42.             string[] s8 ={"昭通市","丽江市","曲靖市","保山市","大理州","楚雄州","昆明市","瑞丽市",
  43.                 "玉溪市","临沧市","思茅市","红河州","文山市","西双版纳州","德宏州","怒江州","迪庆州"};//云南省
  44.             string[] s9 ={"呼伦贝尔市","兴安盟","锡林郭勒盟","巴彦淖尔","包头市","呼和浩特市",
  45.                 "锡林浩特市","通辽市","赤峰市","乌海市","鄂尔多斯","乌兰察布市"};//内蒙古
  46.             string[] s10 = { "辽源市", "通化市", "白城市", "松原市", "长春市", "吉林市", "桦甸市", "延边州", "集安市", "白山市", "四平市" };//吉林省
  47.             string[] s11 ={"甘孜州","阿坝州","成都市","绵阳市","雅安市","峨眉山市","乐山市","宜宾市","巴中市","达州市","遂宁市",
  48.                 "南充市","沪州市","自贡市","攀枝花市","德阳市","广元市","内江市","广安市","眉山市","资阳市","凉山州"};//四川省
  49.             string[] s12 = { "石嘴山市", "银川市", "吴忠市", "固原市" };//宁夏回族自治区
  50.             string[] s13 ={"淮南市","马鞍山市","淮北市","铜陵市","滁州市","巢湖市","池州市","宜城市",
  51.                 "毫州市","宿州市","阜阳市","六安市","蚌埠市","合肥市","芜湖市","安庆市","黄山市"};//安徽省
  52.             string[] s14 ={"德州市","滨州市","烟台市","聊城市","济南市","泰安市","淄博市","潍坊市","青岛市",
  53.                 "济宁市","日照市","泰山市","枣庄市","东营市","威海市","莱芜市","临沂市","菏泽市"};//山东省
  54.             string[] s15 ={ "长治市", "晋中市", "朔州市", "大同市", "吕梁市", "忻州市", "太原市",
  55.                 "阳泉市", "临汾市", "运城市", "晋城市", "五台山市" };//山西省
  56.             string[] s16 ={ "南雄市", "韶关市", "清远市", "梅州市", "肇庆市", "广州市", "河源市",
  57.                 "汕头市", "深圳市", "汕尾市", "湛江市", "阳江市", "茂名市", "佛冈市", "梅县市",
  58.                 "电白市","高要市","珠海市","佛山市","江门市","东莞市","中山市","潮州市","揭阳市","云浮市" };//广东省
  59.             string[] s17 ={ "桂林市", "河池市", "柳州市", "百色市", "贵港市", "梧州市", "南宁市",
  60.                 "钦州市", "北海市", "防城港市", "玉林市", "贺州市", "来宾市", "崇左市" };//广西省
  61.             string[] s18 ={ "昌吉州", "克孜勒苏柯尔克孜自治州", "伊犁州", "阿拉尔市", "克拉玛依市",
  62.                 "博尔塔拉州", "乌鲁木齐市", "吐鲁番市", "阿克苏市", "石河子市", "喀什市", "和田市", "哈密市", "奇台市"};//新疆维吾尔自治区
  63.             string[] s19 ={ "无锡市", "苏州市", "盱眙市", "赣榆市", "东台市", "高邮市", "镇江市",
  64.                 "泰州市", "宿迁市", "徐州市", "连云港市", "淮安市", "南京市", "扬州市", "盐城市", "南通市", "常州市"};//江苏省
  65.             string[] s20 ={ "庐山市", "玉山市", "贵溪市", "广昌市", "萍乡市", "新余市", "宜春市",
  66.                 "赣州市", "九江市", "景德镇市", "南昌市", "鹰潭市", "上饶市", "抚州市" };//江西省
  67.             string[] s21 ={ "邯郸市", "衡水市", "石家庄市", "邢台市", "张家口市", "承德市",
  68.                 "秦皇岛市", "廊坊市", "唐山市", "保定市", "沧州市" };//河北省
  69.             string[] s22 ={ "安阳市", "三门峡市", "郑州市", "南阳市", "周口店市", "驻马店市", "信阳市",
  70.                 "开封市", "洛阳市", "平顶山市", "焦作市", "鹤壁市", "新乡市", "濮阳市", "许昌市", "漯河市", "商丘市", "济源市" };//河南省
  71.             string[] s23 ={ "湖州市", "嵊州市", "平湖市", "石浦市", "宁海市", "洞头市", "舟山市", "杭州市",
  72.                 "嘉兴市", "定海市", "金华市", "绍兴市", "宁波市", "衢州市", "丽水市", "台州市", "温州市" };//浙江省
  73.             string[] s24 ={ "海口市", "三亚市", "屯昌市", "琼海市", "儋州市", "文昌市", "万宁市", "东方市",
  74.                 "澄迈市", "定安市", "临高市", "白沙黎族自治县", "乐东黎族自治县", "乐东黎族自治县", "乐东黎族自治县", "琼中黎族苗族自治县" };//海南省
  75.             string[] s25 ={ "襄樊市", "荆门市", "黄冈市", "恩施市", "武汉市", "黄石市", "鄂州市",
  76.                 "孝感市", "咸宁市", "随州市", "仙桃市", "天门市", "潜江市", "神农架市" };//湖北省
  77.             string[] s26 ={ "张家界市", "岳阳市", "怀化市", "长沙市", "邵阳市", "益阳市", "郴州市",
  78.                 "桑植市", "沅陵市", "南充市", "株洲市", "湘潭市", "衡阳市", "娄底市", "常德市"};//湖南省
  79.             string[] s27 ={ "张掖市", "金昌市", "武威市", "兰州市", "白银市", "定西市", "平凉市",
  80.                 "庆阳市", "甘南市", "临夏市", "天水市", "嘉峪关市", "酒泉市", "陇南市市" };//甘肃省
  81.             string[] s28 = { "莆田市", "浦城市", "南平市", "宁德市", "福州市", "龙岩市", "三明市", "泉州市", "漳州市", "厦门市" };//福建省
  82.             string[] s29 = { "那曲地区", "日喀则地区", "拉萨市", "山南地区", "阿里地区", "昌都地区", "林芝地区" };//西藏
  83.             string[] s30 = { "毕节市", "遵义市", "铜仁市", "安顺市", "贵阳市", "黔西南州", "六盘水市", };//贵州省
  84.             string[] s31 ={ "葫芦岛市", "盘锦市", "辽阳市", "铁岭市", "阜新市", "朝阳市", "锦州市",
  85.                 "鞍山市", "沈阳市", "本溪市", "抚顺市", "营口市", "丹东市", "瓦房店市", "大连市" };//辽宁省
  86.             string[] s32 = { "榆林市市", "延安市", "西安市", "渭南市", "汉中市", "商洛市", "安康市", "铜川市", "宝鸡市", "咸阳市" };//陕西省
  87.             string[] s33 = { "海北州", "海南州", "西宁州", "玉树州", "黄南州", "果洛州", "海西州", "海东州" };//青海省
  88.             string[] s34 ={ "大兴安岭地区", "黑河市", "齐齐哈尔市", "绥化市", "鹤岗市", "佳木斯市", "伊春市", "双鸭山市",
  89.                 "哈尔滨市", "鸡西市", "漠河市", "大庆市", "七台河市", "牡丹江市", "绥芬河市"};//黑龙江省

  90.             //string st = "p北京市" + string.Concat(s1, ",") + "p上海市" + string.Concat(s2, ",") + "p天津市" + string.Concat(s3, ",") + "p重庆市" + string.Concat(s4, ",") + "p香港" + string.Concat(s5, ",") + "p澳门" + string.Concat(s6, ",") + "p台湾省" + string.Concat(s7, ",") + "p云南省" + string.Concat(s8, ",") + "p内蒙古" + string.Concat(s9, ",") + "p吉林省" + string.Concat(s10, ",") + "p四川省" + string.Concat(s11, ",") + "p宁夏" + string.Concat(s12, ",") + "p安徽省" + string.Concat(s13, ",") + "p山东省" + string.Concat(s14, ",") + "p山西省" + string.Concat(s15, ",") + "p广东省" + string.Concat(s16, ",") + "p广西省" + string.Concat(s17, ",") + "p新疆" + string.Concat(s18, ",") + "p江苏省" + string.Concat(s19, ",") + "p江西省" + string.Concat(s20, ",") + "p河北省" + string.Concat(s21, ",") + "p河南省" + string.Concat(s22, ",") + "p浙江省" + string.Concat(s23, ",") + "p海南省" + string.Concat(s24, ",") + "p湖北省" + string.Concat(s25, ",") + "p湖南省" + string.Concat(s26, ",") + "p甘肃省" + string.Concat(s27, ",") + "p福建省" + string.Concat(s28, ",") + "p西藏" + string.Concat(s29, ",") + "p贵州省" + string.Concat(s30, ",") + "p辽宁省" + string.Concat(s31, ",") + "p陕西省" + string.Concat(s32, ",") + "p青海省" + string.Concat(s33, ",") + "p黑龙江省" + string.Concat(s34, ",");
  91.             string st = arrayToString(s1) + "p" + arrayToString(s2) + "p" + arrayToString(s3) + "p" + arrayToString(s4) + "p" + arrayToString(s5) + "p" + arrayToString(s6) + "p" + arrayToString(s7) + "p" + arrayToString(s8) + "p" + arrayToString(s9) + "p" + arrayToString(s10) + "p" + arrayToString(s11) + "p" + arrayToString(s12) + "p" + arrayToString(s13) + "p" + arrayToString(s14) + "p" + arrayToString(s15) + "p" + arrayToString(s16) + "p" + arrayToString(s17) + "p" + arrayToString(s18) + "p" + arrayToString(s19) + "p" + arrayToString(s20) + "p" + arrayToString(s21) + "p" + arrayToString(s22) + "p" + arrayToString(s23) + "p" + arrayToString(s24) + "p" + arrayToString(s25) + "p" + arrayToString(s26) + "p" + arrayToString(s27) + "p" + arrayToString(s28) + "p" + arrayToString(s29) + "p" + arrayToString(s30) + "p" + arrayToString(s31) + "p" + arrayToString(s32) + "p" + arrayToString(s33) + "p" + arrayToString(s34);
  92.             //st = st.Substring(st.IndexOf(tscboxPro.Text), 4);
  93.             st = st.Split('p')[tscboxPro.SelectedIndex];
  94.             string[] str = st.Split(',');
  95.             for (int j = 0; j < str.Length; j++)
  96.             {
  97.                 tscboxCity.Items.Add(str[j]);
  98.             }
  99.             tscboxCity.SelectedIndex = 0;
  100.             
  101.         }

  102.         private string arrayToString(string[] strArray)
  103.         {
  104.             StringBuilder str = new StringBuilder();
  105.             for (int i = 0; i < strArray.Length; i++)
  106.             {
  107.                 if (i > 0)
  108.                 {
  109.                     //分割符可根据需要自行修改
  110.                     str.Append(",");
  111.                 }
  112.                 str.Append(strArray[i]);
  113.             }
  114.             return str.ToString();
  115.         }
  116.     }
  117. }
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-12-13 16:39 | 显示全部楼层
VBA万岁 发表于 2015-12-12 16:42
七、如何用C#(数据库绑定的方法)读取Excel数据表数据?


奇怪,我用楼下的两段代码想在comboBox1控件的下拉项绑定至数据库中的字段[省],代码没报错,但是运行时,却弹出如下错误,不知为何?如何解决?

P2015121301.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-12-13 16:40 | 显示全部楼层
VBA万岁 发表于 2015-12-13 16:39
奇怪,我用楼下的两段代码想在comboBox1控件的下拉项绑定至数据库中的字段[省],代码没报错,但是运行时 ...

两代码分别为:
(一):
  1. comboBox1.Items.Clear();
  2.             OleDbConnection oledbcConnection2;
  3.             try
  4.             {
  5.                 string filename2 = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + "\\省市区三级联动.mdb";
  6.                 MessageBox.Show(filename2);
  7.                 string strConn2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename2 + ";Extended Properties=Excel 8.0";               
  8.                 oledbcConnection2 = new OleDbConnection(strConn2);
  9.                 oledbcConnection2.Open();
  10.                 string strCom2 = "SELECT * FROM VBA实现省市区三级联动";
  11.                 DataSet myDataSet2 = new DataSet();
  12.       
  13.                 OleDbDataAdapter myCommand2 = new OleDbDataAdapter(strCom2, oledbcConnection2);
  14.                 myCommand2.Fill(myDataSet2, "VBA实现省市区三级联动");
  15.                 oledbcConnection2.Close();
  16.                 comboBox1.DataSource = myDataSet2;
  17.                 comboBox1.DisplayMember = "VBA实现省市区三级联动.省";
  18.                 comboBox1.ValueMember = "VBA实现省市区三级联动.省";
  19.             }
  20.             catch (Exception exception)
  21.             {
  22.                 MessageBox.Show(exception.Message);
  23.             }
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-12-13 16:41 | 显示全部楼层
VBA万岁 发表于 2015-12-13 16:40
两代码分别为:
(一):

(二):
  1. {
  2.                 string filename2 = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + "\\省市区三级联动.mdb";
  3.                 string strConnection = "Provider = Microsoft.Jet.OleDb.4.0;";
  4.                 strConnection += @"Data Source = " + filename2;
  5.                 OleDbConnection objConnection = new OleDbConnection(strConnection);
  6.                 objConnection.Open();
  7.                 string sql = "select * from VBA实现省市区三级联动";
  8.                 OleDbCommand cmd = new OleDbCommand(sql, objConnection);
  9.                 OleDbDataReader reader = cmd.ExecuteReader();
  10.                 comboBox1.Items.Clear();
  11.                 while (reader.Read())
  12.                 {
  13.                     comboBox1.Items.Add((string)reader["省"]);
  14.                     //dess.add(reader["省"].ToString());
  15.                     //richTextBox1.Text = ((string)reader["省"]);
  16.                 }
  17.                 cmd.Dispose();
  18.                 reader.Close();
  19.                 objConnection.Close();
  20.             }
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-24 02:09 , Processed in 0.036958 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表