C#将wps表格读到datatable中并显示在页面
来源:互联网 发布:知彼定位 编辑:程序博客网 时间:2024/04/28 00:17
本文主要讲如何利用金山的ET动态链接库读取wps表格,因为这方面好像很少有代码贴出来所以自己搜索了一些资料,自己研究了一下。在这里和大家共享一下吧!
(一)环境配置
我在电脑上安装的是wps2012增强版。安装好之后,新建一个wpf项目。然后在项目中添加引用,点击com,把Kingsoft ET 2.0 object library.dll添加到引用到项目中。
显示表格用的是dev的空间gridcontrol,在windows中加入一个gridcontrol控件。
(二)类建立
这里采集数据的方式和微软的excel有点不一样,微软的是通过访问数据库,对表格进行填充的。这里,我对wps表格的数据库连接不熟悉,也没有例程,所以采用的方法是将每一行数据读取出来建立行,然后添加到datatable中。
具体代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Threading.Tasks;
using ET;
namespace wps接口测试
{
class WPSET
{
/// <summary>
/// 要导入的表格的路径
/// </summary>
public string path;
/// <summary>
/// 表格列数
/// </summary>
public string tablename;
public int col;
/// <summary>
/// 表格行数
/// </summary>
public int row;
/// <summary>
/// 存放表的列名称
/// </summary>
public string[] filedname;
ET.Application my_excel;
ET._Workbook my_book;
ET.Worksheet my_sheet;
ET.Range my_range;
/// <summary>
/// 存放到datatable类型中
/// </summary>
public DataTable table=new DataTable();
public WPSET(String path)
{
this.path = path;
my_excel = new Application();
my_book = my_excel.Application.Workbooks.Open(path);
my_sheet = my_book.Sheets[1];
my_range = my_sheet.UsedRange;
row = my_range.Rows.Count;
col = my_range.Columns.Count;
SetColumn();
SetRowValue();
Settablename();
my_excel.Application.Workbooks.Close();//这里一定要关闭,否则程序执行完之后,et.exe不会清除。而且是执行一次多一个et.exe进程。
}
/// <summary>
/// 获取列名(列名为第一行)
/// </summary>
void SetColumn()
{
filedname=new string[col];
for (int i = 0; i < col; i++)
{
filedname[i] =my_range.get_Item(1, i+1).Text;
var datacolumn = new DataColumn();
datacolumn.ColumnName = filedname[i];
table.Columns.Add(datacolumn);
}
}
/// <summary>
/// 获取每一行的值
/// </summary>
void SetRowValue()
{
for (int i = 1; i < row; i++)
{
DataRow datarow = table.NewRow();
for (int j = 0; j < col; j++)
{
datarow[filedname[j]] = my_range.get_Item(i + 1, j + 1).Text;
}
table.Rows.Add(datarow);
}
}
/// <summary>
/// 获取文件名
/// </summary>
void Settablename()
{
string[] str;
str = path.Split('\\');
tablename = str[str.Length - 1];
tablename = tablename.Substring(0,tablename.IndexOf('.'));
}
}
}
(3)主函数调用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Data;
using System.Data.Odbc;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using AddInDesignerObjects;
using Xpf= DevExpress.Xpf.Grid;
using ET;
namespace wps接口测试
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow :System.Windows.Window
{
public MainWindow()
{
InitializeComponent();
string pathname = @"E:\zjwms\CMS\相关文档\3月份(2).xls"; //这里是文件路径
WPSET et = new WPSET(pathname);
for (int i = 0; i < et.filedname.Length; i++) //gridcontroll控件的列名绑定
{
Xpf.GridColumn tablecolumn = new Xpf.GridColumn();
tablecolumn.FieldName = et.filedname[i];
show.Columns.Add(tablecolumn);
}
this.Title = et.tablename;
this.show.ItemsSource = et.table;
}
}
}
下面附带效果图。项目文件http://download.csdn.net/detail/u014489375/9584456。
- C#将wps表格读到datatable中并显示在页面
- C#读取Excel表格中数据并返回datatable
- 使用该JavaBean可以将数据在JSP页面中以表格的形式显示出来,并具有动态排序、动态生成查询、自动分页功能
- C#读取Excel表格中内容并显示在DataGridView控件中
- C#中 将DataTable内容显示到ListView当中
- 在ACE引入的表格插件中Datatables中使用判断,将数字指代的含义显示在页面上。
- 将数据库中的数据读入到ArrayList中,并在页面上显示
- [PHP]进阶教程:将wav文件转换成图像文件并在页面中显示
- AJAX编程技巧:在页面上中如何将受到的xml文件显示为表格的形式?
- AJAX编程技巧:在页面上中如何将收到的xml文件显示为表格的形式?
- 用C#实现动态生成Word文档,在Word文档中插入表格,并将读出的数据填入到表格中
- c# DataTable重新调整成新DataTable,然后动态显示在HTML Table中
- C#中导出数据到WPS表格或者Excel2003
- 学习:解析XML并显示在表格中
- 在静态HTML页面中动态显示表格数据
- 如果在表格中想要显示一个页面,该怎么办?
- C# 在excel表格中检索并导出数据
- 如何在excel/wps表格中合并页签
- python核心编程第五章练习
- uva 537
- HDU-1251 统计难题(字典树)
- 艰难的起步
- Memory Card、逻辑加密卡、CPU卡
- C#将wps表格读到datatable中并显示在页面
- 大话设计模式15----抽象工厂模式
- warning C4305:“初始化”:从“double”到“float”截断
- Android 中 Canvas 绘图之 Shader 使用图文详解
- Linux - ncat ssl backdoor
- SQLSERVER触发器内INSERT,UPDATE,DELETE三种状态
- mysql命令行设置支持blob大数据的导入
- uva 10010
- Android 中 Canvas 绘图之 PorterDuffXfermode 使用及工作原理详解