ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 6849|回复: 11

[讨论] C#窗体应用软件-压缩Access数据库及Excel插件

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-11-19 23:51 | 显示全部楼层 |阅读模式
本帖最后由 lipton 于 2012-11-20 11:48 编辑

题目来源与VBA版 http://club.excelhome.net/forum. ... 087&page=2#lastpost
原想用VBA解决,那个 msjro.dll在64位win7不让注册。正好在学习C# ,尝试实际应用。
代码如下:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Data.OleDb;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Windows.Forms;
  10. using Microsoft.Office.Interop.Access.Dao;

  11. namespace AccessFixDemo
  12. {
  13.     public partial class Form1 : Form
  14.     {
  15.         public string strS;
  16.         public Form1()
  17.         {
  18.             InitializeComponent();
  19.         }

  20.         private void button1_Click(object sender, EventArgs e)
  21.         {
  22.             OpenFileDialog openFileDialog1 = new OpenFileDialog();
  23.             openFileDialog1.InitialDirectory = "D://Patch";
  24.             openFileDialog1.Filter = "All files (*.*)|*.accdb";
  25.             openFileDialog1.FilterIndex = 2;
  26.             openFileDialog1.RestoreDirectory = true;
  27.             string strT = "d:\\tempAccess.accdb";
  28.             DBEngine db = new Microsoft.Office.Interop.Access.Dao.DBEngine();
  29.             if (openFileDialog1.ShowDialog() == DialogResult.OK)
  30.             {
  31.                 strS = openFileDialog1.FileName.ToString();
  32.                 if (this.textBox1.Text.Length > 0)
  33.                 {
  34.                     //有密码
  35.                     try
  36.                     {
  37.                         db.CompactDatabase(strS, strT, null, null, ";pwd=" + this.textBox1.Text);
  38.                     }
  39.                     catch (Exception ex)
  40.                     {
  41.                         MessageBox.Show(ex.Message);
  42.                     }

  43.                 }
  44.                 else
  45.                 {
  46.                     //无密码
  47.                     try
  48.                     {
  49.                         db.CompactDatabase(strS, strT);
  50.                     }
  51.                     catch (Exception ex)
  52.                     {
  53.                         MessageBox.Show(ex.Message);
  54.                     }
  55.                
  56.                 }
  57.                 System.IO.File.Delete(strS);
  58.                 System.IO.File.Move(strT, strS);
  59.                 MessageBox.Show("压缩完成");
  60.             
  61.             }

  62.         }

  63.         
  64.     }
  65. }
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-20 00:00 | 显示全部楼层
源代码附件包括  bin\debug\有一个exe可执行文件accessFixDemo.exe
publish文件夹一个安装包

窗体做的很丑,呵呵。
在 win7 64 测试通过,不知道是否能在32位环境运行?


AccessFixDemo.rar

401.92 KB, 下载次数: 41

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-20 00:21 | 显示全部楼层
这段代码 写的曲折,原来是用x86方式 愿望是与32位兼容,结果总是提示控件没有注册,查了许多资料不得要领,大多提示是 改成x86.后来改成any cpu测试才通过 。

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-20 11:51 | 显示全部楼层
根据1楼的代码改成Excel2010插件
插件选择.png
插件外观.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-20 11:52 | 显示全部楼层
主要代码
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Data.OleDb;
  5. using System.Linq;
  6. using System.Text;
  7. using Microsoft.Office.Tools.Ribbon;
  8. using Microsoft.Office.Interop.Access.Dao;
  9. using System.Windows.Forms;

  10. namespace ExcelAddInAccess
  11. {
  12.     public partial class Ribbon1
  13.     {
  14.         private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
  15.         {
  16.         }

  17.         private void button1_Click(object sender, RibbonControlEventArgs e)
  18.         {
  19.             OpenFileDialog openFileDialog1 = new OpenFileDialog();
  20.             openFileDialog1.InitialDirectory = "D://Patch";
  21.             openFileDialog1.Filter = "All files (*.*)|*.accdb";
  22.             openFileDialog1.FilterIndex = 2;
  23.             openFileDialog1.RestoreDirectory = true;
  24.             string strT = "d:\\tempAccess.accdb";
  25.             string strS = null;
  26.             string strpwd = this.editBox1.Text.ToString();
  27.             DBEngine db = new Microsoft.Office.Interop.Access.Dao.DBEngine();
  28.             if (openFileDialog1.ShowDialog() == DialogResult.OK)
  29.             {

  30.                 strS = openFileDialog1.FileName.ToString();
  31.                 if (strpwd.Length > 0)
  32.                 {
  33.                     //有密码
  34.                     try
  35.                     {
  36.                         db.CompactDatabase(strS, strT, null, null, ";pwd=" + strpwd);
  37.                     }
  38.                     catch (Exception ex)
  39.                     {
  40.                         MessageBox.Show(ex.Message);
  41.                     }

  42.                 }
  43.                 else
  44.                 {
  45.                     //无密码
  46.                     try
  47.                     {
  48.                         db.CompactDatabase(strS, strT);
  49.                     }
  50.                     catch (Exception ex)
  51.                     {
  52.                         MessageBox.Show(ex.Message);
  53.                     }

  54.                 }
  55.                 System.IO.File.Delete(strS);
  56.                 System.IO.File.Move(strT, strS);
  57.                 MessageBox.Show("压缩完成");

  58.             }
  59.         }
  60.     }
  61. }
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-20 12:04 | 显示全部楼层
附件源代码说明:
publish.rar安装包,运行环境需要  .NET 4.0

ExcelAddinAccess.RAR 插件源代码
插件功能:压缩Access2007-2010数据库
如果数据库有密码要先输入密码在点击打开文件

编译环境:win7 64 + office2010 64 + vs2010 类库 .NET 4.0
插件测试通过
另外:32位环境是否能运行,谁能帮忙测试一下。

ExcelAddInAccess.rar

445.28 KB, 下载次数: 33

publish.rar

187.51 KB, 下载次数: 29

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-20 19:52 | 显示全部楼层
win7 64 office2010 32 没有安装 VSTO 测试通过

TA的精华主题

TA的得分主题

发表于 2012-11-22 18:10 | 显示全部楼层
lipton 发表于 2012-11-20 19:52
win7 64 office2010 32 没有安装 VSTO 测试通过

安装出错!没法用!

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-22 18:29 | 显示全部楼层
yuk_yu 发表于 2012-11-22 18:10
安装出错!没法用!

出错提示什么?你的运行环境是什么?能不能截一个图发上来?

TA的精华主题

TA的得分主题

发表于 2014-10-14 15:45 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-26 10:43 , Processed in 0.038343 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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