asp.net(c#) 将dbf转换为xls或wps,并将数据的列名改成中文;并判断本机是否安装office2003,2007和wps2007,2010
using Microsoft.Office.Interop.Excel;//转换为excel时,需要引用此命名空间
using ET;//转换为wps时,需要引用此命名空间
using KSO;//转换为wps时,需要引用此命名空间
当转换为excel时,需要引入Microsoft.Office.Interop.Excel.dll;当转换为wps时,需要引入Interop.ET.dll,Interop.KSO.dll;
#region 查询注册表,判断本机是否安装office2003,2007和wps
public int ExistsRegedit()
{
int ifused = 0;
RegistryKey rk = Registry.LocalMachine;
RegistryKey akey = rk.OpenSubKey(@"SOFTWARE\Microsoft\Office\11.0\Excel\InstallRoot\");//查询2003
RegistryKey akey07 = rk.OpenSubKey(@"SOFTWARE\Microsoft\Office\12.0\Excel\InstallRoot\");//查询2007
RegistryKey akeytwo = rk.OpenSubKey(@"SOFTWARE\Kingsoft\Office\6.0\common\");//查询wps
//检查本机是否安装Office2003
if (akey != null)
{
string file03 = akey.GetValue("Path").ToString();
if (File.Exists(file03 + "Excel.exe"))
{
ifused += 1;
}
}
//检查本机是否安装Office2007
if (akey07 != null)
{
string file07 = akey.GetValue("Path").ToString();
if (File.Exists(file07 + "Excel.exe"))
{
ifused += 2;
}
}
//检查本机是否安装wps
if (akeytwo != null)
{
string filewps = akeytwo.GetValue("InstallRoot").ToString();
if (File.Exists(filewps + @"\office6\et.exe"))
{
ifused += 4;
}
}
return ifused;
}
#endregion
#region 将DBF文件放入DataSet
private DataSet DbfToDs(string my_TablePath, string my_TableName)
{
//数据库连接定义
OleDbConnection my_conn; //数据连接
OleDbDataAdapter my_Adapter;//数据适配器
DataSet my_Ds = null;
////数据库连接
try
{
string path = my_TablePath.Substring(0, my_TablePath.LastIndexOf("\\")) + "\\";
string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=dBASE IV;Persist Security Info=False;";
string my_StrSelect = "SELECT * FROM " + my_TableName;
my_conn = new OleDbConnection(connString);
my_Adapter = new OleDbDataAdapter(my_StrSelect, my_conn);
my_Ds = new DataSet();
//填充数据集
my_Adapter.Fill(my_Ds, my_TableName);
}
catch (Exception ex)
{
MessageBox.Show("选择文件格式不正确,请选择.dbf文件!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
return my_Ds;
}
#endregions
#region 把数据文件导入到.xls文件
public void ExportToExcel(DataSet ds)
{
if (ds.Tables.Count != 0)
{
//创建excel文件
Microsoft.Office.Interop.Excel.Application myExcel = new Microsoft.Office.Interop.Excel.ApplicationClass();
//打开已有的文件
Microsoft.Office.Interop.Excel.Workbook xBook = myExcel.Workbooks._Open(txtPath.Text , Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
//指定要操作的sheet
Microsoft.Office.Interop.Excel.Worksheet xSheet = (Microsoft.Office.Interop.Excel.Worksheet)xBook.Sheets[1];
#region 改成中文列名
xSheet.Cells[1, 1] = "程序员";
.
.
.
//改成中文列名时,可将中文列名放入string[]中,然后循环此数组,将第一行改成相应的中文列名
#endregion
xBook.SaveAs(txtPath.Text, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
myExcel.Visible = true;
}
else
{
System.Windows.Forms.MessageBox.Show("No Data");
}
}
#endregion
#region 把数据文件导出为wps
public void ExportToWps(DataSet ds)
{
if (ds.Tables.Count > 0)
{
eTApp = new ET.Application();
eTApp.Visible = false;
eTWorkBook = eTApp.Workbooks.Open(txtPath.Text, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
eTWorkSheet = (ET.Worksheet)eTWorkBook.Worksheets[1];
#region 改成中文列名
eTWorkBook.ActiveSheet.Cells.set_Item(1, 1, "程序员")
#endregion
eTWorkBook.SaveAs(txtPath.Text, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, ETSaveAsAccessMode.etNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
eTApp.Visible = true;
}
}
#endregion
当转换成xls或者wps时,一般都是循环dataset然后将数据写入每一个单元格,但是当数据量大时转换速度会很慢;所以将数据放入dataset后,可以使用file.copy(文件1,文件2);这样速度会快很多;
asp.net(c#) 将dbf转换为xls或wps,并将数据的列名改成中文;并判断本机是否安装office2003,2007和wps2007,2010的更多相关文章
- ASP.NET WEB API微信支付通知接口,返回xml数据,微信服务器不识别问题
原文:ASP.NET WEB API微信支付通知接口,返回xml数据,微信服务器不识别问题 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/MrTra ...
- ABP(现代ASP.NET样板开发框架)系列之13、ABP领域层——数据过滤器(Data filters)
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之13.ABP领域层——数据过滤器(Data filters) ABP是“ASP.NET Boilerplate P ...
- 检测到有潜在危险的 Request.Form 值。 说明: ASP.NET 在请求中检测到包含潜在危险的数据
在请求方法的顶部添加 [ValidateInput(false)]就OK了 从客户端(Content=" sdfdddd ...")中检测到有潜在危险的 Reques ...
- ASP.NET 使用mode=”InProc”方式保存Session老是丢失,无奈改成StateServer 模式。
http://blog.csdn.net/fox123871/article/details/8165431 session是工作在你的应用程序进程中的.asp.net进程.iis往往会在20分钟之后 ...
- ASP.NET中使用JSON方便实现前台与后台的数据交换
ASP.NET中使用JSON方便实现前台与后台的数据交换 发表于2014/9/13 6:47:08 8652人阅读 分类: ASP.NET Jquery extjs 一.前台向后台请求数据 在页面加 ...
- ASP.NET CORE系列【六】Entity Framework Core 之数据迁移
原文:ASP.NET CORE系列[六]Entity Framework Core 之数据迁移 前言 最近打算用.NET Core写一份简单的后台系统,来练练手 然后又用到了Entity Framew ...
- [ASP.NET Core 3框架揭秘] 配置[1]:读取配置数据[上篇]
提到"配置"二字,我想绝大部分.NET开发人员脑海中会立即浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化 ...
- [ASP.NET Core 3框架揭秘] 配置[2]:读取配置数据[下篇]
[接上篇]提到“配置”二字,我想绝大部分.NET开发人员脑海中会立即浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化的配置定义 ...
- Asp.net把UTF-8编码转换为GB2312编码
系统采用的UTF-8编码,而一些支持系统使用的是GB2312编码. 不同编码的页面.脚本之间互相引用,就会产生乱码的问题,解决方法就是统一成一种编码.asp.net 中,如果要修改输出页面的编码,可以 ...
随机推荐
- [Git]06 如何提交空目录
git和 svn不同,仅仅跟踪文件的变动,不跟踪目录.所以,一个空目录,如果里面没有文件,即便 git add 这个目录,另外在别处 check out 的时候,是没有这个空目录的. 只跟踪文件 ...
- 蓝桥杯-加法变乘法-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- 自动化运维:使用psutil和paramiko读取远程主机信息
1.前言 今天大致看了下自动化运维的东西,里面介绍到了psutil模块,其封装了linux 下的大部分shell命令,用起来比较方便.但是基本都是介绍在本地如何使用,而实际情况大家很少这样使用,一般 ...
- 广义后缀树(GST)算法的简介
导言 最近软件安全课上,讲病毒特征码的提取时,老师讲了一下GST算法.这里就做个小总结. 简介 基本信息 广义后缀树的英文为Generalized Suffix Tree,简称GST. 算法目的 ...
- 使用cl编译C/C++
每次写程序都是用VS下打开的,而且有智能提示,经常很容易看到自己哪里写错了,其实想联系自己写代码的能力,不应该要这些的,纯粹的不要智能提示 所以自己想用轻量级的编辑器写,然后就用了notepad++( ...
- Eclipse中如何关联Javadoc
MySQL重置密码:http://www.jb51.net/article/35061.htm Eclipse有直接查看java文档和类库源码的功能,不过得手工添加才行,下面对如何在Eclipse中添 ...
- swift学习 - 分类(Extensions)
在oc中为了增强已有类的功能,我们经常使用分类.使用分类,我们可以在不破坏原有类的结构的前提下,对原有类进行模块化的扩展. 但是在swift中没有分类这种写法了.相对应的是swift中只有扩展(Ext ...
- javaWeb学习总结(1)- Tomcat服务器学习和使用(3)
一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命令的用法如下:
- 教育行业app开发新契机,在线教育要从B端出发
近几年移动互联网教育风生水起,在运营模式上的开拓也各不相同,随着移动互联网进入下半场,好未来.新东方.猿题库.学霸君等,都在加速三四线地区布局,以及教育行业app开发和升级. 在移动互联网下半场,用户 ...
- Swift 入门之简单语法(四)
函数 目标 掌握函数的定义 掌握外部参数的用处 掌握无返回类型的三种函数定义方式 代码实现 函数的定义 格式 func 函数名(行参列表) -> 返回值 {代码实现} 调用 let result ...