有没有类似于迅播影院excel效果的Android表格编辑控件

查看:1964|回复:6
助理工程师
请教各位大侠们,这个实现太复杂,小弟一点思路都没有,望各位指点一二啊
1.功能类似QuickOffice中显示excel文件的功能
2.每个单元格可以编辑
3.每个单元格可以放标签,输入框,单选框,多选框,下拉框等主要控件
4.边框颜色,大小,距离,文字对齐,背景色等
初级工程师
这个好难啊
初级工程师
这个在SYMBIAN上实现似乎不太实际在IPhone或其他平台还有那么一回事
助理工程师
大家有什么方法,分享一下啊!
助理工程师
没有人顶啊,大神们快快出手啊,小弟感激不尽啊
助理工程师
初级工程师
学习。。。。。如何用安卓编写类Excel的表格并填充数据
前段时间应运营需求要求做一个小Demo用来显示数据,在这个过程中,我学会了用代码来做出类似于Excel表格的显示效果,下面就和大家一起分享。要做成表格形式的布局,很容易让我们想到表格布局,所以先要新建一个layout,在这个layout中我们放入两个TableLayout,其中一个是用来显示表格中的标题,而另一个TableLayout用来显示数据,考虑到可能显示的数据较多,所以外面包上一层ScrollView。主要代码如下:&TableLayout
android:id=&@+id/tablelayout_title&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:background=&#ffdedcd2&
android:stretchColumns=&*& /&
&ScrollView
android:layout_width=&fill_parent&
android:layout_height=&fill_parent&
android:layout_below=&@id/tablelayout_title&
android:orientation=&vertical&&
&TableLayout
android:id=&@+id/tablelayout&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:background=&#ffdedcd2&
android:stretchColumns=&*& /&
&/ScrollView&写好布局文件后,我们开始要填充数据了,也就是我代码中写到的addWidget()方法。数据的话我是造的json类型的假数据,并且新建对象类进行解析,这个就不多说了。先看主要的填充数据的代码。首先是表格的标题,也就是我们通常看到的表格最上方那一栏。主要代码如下:for (int j = 0; j & 1; j++) {
TableRow localTableRow1 = new TableRow(this);
localTableRow1.setBackgroundColor(getResources().getColor(R.color.realtime_table_bg));
for (int k = 0; k & this.column; k++) {
TextView localTextView1 = new TextView(this);
localTextView1.setWidth(this.viewWidth);
localTextView1.setBackgroundResource(R.drawable.table_shape_title);
localTextView1.setGravity(17);
localTextView1.setTextSize(2, 16);
localTextView1.setTextColor(getResources().getColor(R.color.white));
localTextView1.getPaint().setFakeBoldText(true);
localTextView1.setSingleLine();
switch (k) {
localTextView1.setText(&A&);
localTableRow1.addView(localTextView1);
localTextView1.setText(&B&);
localTableRow1.addView(localTextView1);
localTextView1.setText(&C&);
localTableRow1.addView(localTextView1);
localTextView1.setText(&D&);
localTableRow1.addView(localTextView1);
localTextView1.setText(&E&);
localTableRow1.addView(localTextView1);
localTextView1.setText(&F&);
localTableRow1.addView(localTextView1);
localTextView1.setText(&G&);
localTableRow1.addView(localTextView1);
localTextView1.setText(&H&);
localTableRow1.addView(localTextView1);
this.tb_title.addView(localTableRow1, new TableLayout.LayoutParams(-1, -2));}我们用两个for循环来实现这个数据的填充,最外层for循环之所以判断“j&1”,是因为我们这里只要一行就够了。我们在这里新建一个TabRow,然后再在这一行中添加列。里层的这个for循环中的column就是我们的列数,这里我们用A~H表达我们的列标题名称,通过一个for循环每次新建一个新的TextView,然后判断是第几列,根据位置依次加入我们的列名称。最后在tb_title,也就是我们标题对应的这个TableLayout中添加这些view。同样的,下面的表格布局也是同样的用两个for循环来实现,只是最外层循环我们是要根据服务器传过来的列表大小来决定了。因为我们手机通常是书评,可能导致显示不全或不便观看的问题,所以在setContentView()方法之前我加了一个判断,保证一进入这个页面就会显示为横屏:if (getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);}不过运行之后报错,后来发现是因为这个activity没有设置屏幕显示方向导致的,最后在清单文件里面加上下面这句代码就可以了。android:screenOrientation=&sensorLandscape&表格布局的实现和运用就介绍到这里了,demo下载地址:http://download.csdn.net/detail/shan286/9475782
最新教程周点击榜
微信扫一扫& excel简易版手机版(手机excel电子表格简易版安卓版下载)V1.7.2官方版
excel简易版手机版(手机excel电子表格简易版安卓版下载)V1.7.2官方版
大小:109.63 KB
下载:1749次
分类:商务办公
扫描二维码下载
excel电子表格简易版(EasyExcel)是一个电子表格应用程序。&excel电子表格简易版中提供了23个Excel函数,单元格引用,自动填充等功能。用户可以在手机上轻松的打开excel表格,并且可以对其进行编辑修改,功能和电脑版excel相同,带给用户最高效的办公体验。【软件特色】1、公式、表格、图表、批注、数据透视表、迷你图、条件格式等皆能完美呈现,让您纵观全局。2、Excel 电子表格外观精美,效果媲美您的计算机。3、让您安心地创建和编辑文件。4、当您编辑电子表格时,在您的电脑、Mac、平板电脑和手机等所有设备上的内容和格式都能保持一致。5、支持公式、图表、表格、数据透视表、排序、筛选等诸多功能,让您将数字转换为更深入的信息。
V1.7.2更新记录
本类下载排行
10商务办公
下载吧仅为用户提供信息存储空间服务及链接、搜索服务,所有资源信息均未作修改,不对其真实性、合法性负责。
如有涉嫌侵权或违法违规内容,请发邮件至,以便我们及时处理。
粤ICP备号-6
ICP证:粤B2- 网络文化经营许可证:粤网文[1
联系方式:
下载吧微信
扫一扫关注javascript
&&&&&前段时间学了一下jquery插件,学完之后,没有练习,忘得差不多了,最近一个项目中要使用支持粘贴复制的table,选中表格的一部分区域,通过ctrl+v,可以把excel或者其它地方的数据粘贴到html
table中,还能支持键盘上下左右键移动选择区域。于是就是网上找js excel插件,找到了几个做的都不错,但是都是收费的,不敢使用,其实我们要求的功能不是那么麻烦,于是决定自己写一个能支持粘贴复制,并且可编辑的jquery表格小插件。先看demo:
&meta http-equiv=&Content-Type& content=&text/ charset=gbk&&
&title&安卓无忧支持粘贴复制的表格插件&/title&
&script type=&text/javascript& src=&jquery.min.js&&&/script&
&script type=&text/javascript& src=&tableCJ/firstCJ.js&&&/script&
&link rel=&stylesheet& type=&text/css& href=&tableCJ/firstCJ.css&/&
$(function(){});
$(function(){
$(&#tb2&).createEditTable();
&a href=&/myapp/detail.htm?apkName=com.shandong.mm.androidstudy&&点击查看更多精彩内容&/a&
&a href=&/u/?refer_flag=_&is_hot=1&&微博:honey_11&/a&
&div style=&width:1200height:600clear:both&&
&table id=&tb2& onselectstart ='return false' width=&1000& height=&40& border=&1&&
&td&中国地区名&/td&
&td&男人数量&/td&
&td&女人数量&/td&
&td&拥有qq币&/td&
&td&山东&/td&
&td&123&/td&
&td&456&/td&
&td&444&/td&
&td&山西&/td&
&td&123&/td&
&td&456&/td&
&td&444&/td&
&td&北京&/td&
&td&123&/td&
&td&456&/td&
&td&444&/td&
&td&上海&/td&
&td&123&/td&
&td&456&/td&
&td&444&/td&
&td&江苏&/td&
&td&123&/td&
&td&456&/td&
&td&444&/td&
&td&浙江&/td&
&td&123&/td&
&td&456&/td&
&td&444&/td&
&td&内蒙古&/td&
&td&123&/td&
&td&456&/td&
&td&444&/td&
&td&钓鱼岛&/td&
&td&123&/td&
&td&456&/td&
&td&444&/td&
&td&南海&/td&
&td&123&/td&
&td&456&/td&
&td&444&/td&
id=&textArea&
style=&width:1height:1&&&/textarea&
(function($){
///copy by安卓无忧,更多例子/myapp/detail.htm?apkName=com.shandong.mm.androidstudy
var defaults={
cjtable:&cjtable&,
cjtd:&cjtd&
//定义一个点对象
function Point(){
$.fn.selectTable=function(){
this.find(&tbody tr td:gt(0)&).each(function(){
var colIndex=$(this).index();
if(colIndex==0){
$(this).attr(&isEdit&,'no').addClass(&selectClass&).attr(&startMouseDown&,&no&);
///初始化表格
$.fn.createEditTable=function(){
this.addClass(defaults.cjtable);
this.find(&td&).addClass(defaults.cjtd);
$(document).bind(&mousedown&,docDownhandle);
//处理鼠标按下事件
this.find(&tbody tr td:gt(0)&).mousedown(function(event){
event.stopPropagation();
if(event.button!=2){
var colIndex=$(this).index();
if(colIndex==0){
if($(this).find(&input&).get().length&0){
endEdit();
tb.find(&td&).removeClass(&selectClass&).attr(&startMouseDown&,&no&);
$(this).attr(&startMouseDown&,&yes&);
$(this).addClass(&selectClass&);
tb.find(&tbody td&).each(function(){
var colIndex=$(this).index();
if(colIndex==0){
$(this).bind(&mousemove&,cellMove);
$(document).bind(&mouseup&,uphandle);
}).bind(&dblclick&,dblclick);
$(document).bind(&keydown&,nt);
///鼠标移动的处理事件
function cellMove(){
setSelectRegion.call(this);
function docDownhandle(){
tb.find(&td&).removeClass(&selectClass&).attr(&startMouseDown&,&no&);
endEdit();
//鼠标抬起的处理事件
function uphandle(tempTd){
tb.find(&tbody td&).unbind(&mousemove&,cellMove);
// $(tempTd).parent().parent().find(&td&).unbind(&mousemove&,cellMove);
$(this).unbind(&mouseup&,uphandle);
// alert(&up&);
///设置选中区域
function setSelectRegion(){
var spoint=new Point();
var epoint=new Point();
var startCells=$(this).parent().parent().find(&td[startMouseDown='yes']&).get();
if(startCells.length==0){
var startCell=startCells[0];
if(startCell==endCell){
$(this).parent().parent().find(&td&).removeClass(&selectClass&);
spoint.x=$(startCell).index()&$(endCell).index()?$(startCell).index():$(endCell).index();
spoint.y=$(startCell).parent().index()&$(endCell).parent().index()?$(startCell).parent().index():$(endCell).parent().index();
epoint.x=$(startCell).index()&$(endCell).index()?$(startCell).index():$(endCell).index();
epoint.y=$(startCell).parent().index()&$(endCell).parent().index()?$(startCell).parent().index():$(endCell).parent().index();
for(var i=spoint.y;i&=epoint.y;i++){
for(var j=spoint.x;j&=epoint.x;j++){
tb.find(&tbody tr&).eq(i).children().eq(j).addClass(&selectClass&);
///从单元格中获取值
function getValueFromCell(){
return $(this).text();
//处理双击编辑事件
function dblclick(event){
startEdit.call(this);
///开始编辑
function startEdit(startEditValue){
if($(this).find(&input&).get().length&0){
endEdit();
var inpwidth=$(this).css(&width&);
var inpheight=$(this).css(&height&);
var cellValue=getValueFromCell.call(this);
if(startEditValue!=null){
cellValue=startEditV
$(this).attr(&isEdit&,&yes&);
$(this).parent().parent().find(&td&).removeClass(&selectClass&);
///控制input只允许输入数字和小数点
inp=$(&&input type='text' style='width:50height:30px'&&+&&/input&&);
inp.on('keyup', function (event) {
var $inp = $(this);
//响应鼠标事件,允许左右方向键移动
event = window.event ||
if (event.keyCode == 37 | event.keyCode == 39) {
//先把非数字的都替换掉,除了数字和.
$inp.val($inp.val().replace(/[^\d.]/g, &&).
//只允许一个小数点
replace(/^\./g, &&).replace(/\.{2,}/g, &.&).
//只能输入小数点后两位
replace(&.&, &$#$&).replace(/\./g, &&).replace(&$#$&, &.&).replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3'));
inp.on('blur', function () {
var $inp = $(this);
$inp.val(($amountInput.val().replace(/\.$/g, &&)));
inp.val(cellValue);
inp.css(&width&,inpwidth);
inp.css(&height&,inpheight);
$(this).html(inp);
$(&#t1&).focus();
inp.focus();
///结束编辑
function endEdit(){
var currentEditCells=tb.find(&tbody td[isEdit='yes']&).get();
var currentEditC
if(currentEditCells.length&0){
currentEditCell=currentEditCells[0];
if($(currentEditCell).find(&input&).get().length==0){
var ivalue=$(currentEditCell).find(&input&).val();
$(currentEditCell).html(&&);
$(currentEditCell).append(ivalue);
$(currentEditCell).attr(&isEdit&,'no');
///先把要粘贴的数据放入textArea控件中
function dealwithData(event) {
var ss = document.getElementById(&textArea&);
var reg=/[\s]+/g;
var arr=ss.value.split(reg);
ss.blur();
dealCtrlV(arr);
//处理ctrl+v
function dealCtrlV(arr){
var arrtd=tb.find(&.selectClass&).get();
for(var i=0;i&arrtd.i++){
if(i&arr.length&&arr[i]!=&&){
if(!isNaN(arr[i])){
$(arrtd[i]).html(&&);
$(arrtd[i]).append(arr[i]);
$(arrtd[i]).attr(&isEdit&,'no');
$(arrtd[i]).html(arr[i]);
///处理键盘上下左右移动
function nt(event) {
if (event.ctrlKey && event.keyCode == 86) {
var ss = document.getElementById(&textArea&);
$(ss).focus();
$(ss).select();
// 等50毫秒,keyPress事件发生了再去处理数据
setTimeout(dealwithData,50);
var currentEditCells=tb.find(&tbody td[isEdit='yes']&).get();
var currentEditC
if(currentEditCells.length&0){
currentEditCell=currentEditCells[0];
var arrtd=tb.find(&tbody td.selectClass&).get();
if(arrtd.length==1||currentEditCell!=null){
var currentSelectC
if(currentEditCell!=null){
currentSelectCell=currentEditC
currentSelectCell=arrtd[0];
var myColIndex=$(currentSelectCell).index();
var myRowIndex=$(currentSelectCell).parent().index();
if(event.keyCode == 37){//LEFT左
event.stopPropagation();
event.preventDefault();
endEdit.call(currentSelectCell);
tb.find(&td&).removeClass('selectClass');
if(myColIndex==1){
myColIndex=0;
$(currentSelectCell).parent().find('td:eq('+(--myColIndex)+')').addClass('selectClass');
}else if (event.keyCode == 39){//RIGHT右
event.stopPropagation();
event.preventDefault();
endEdit.call(currentSelectCell);
tb.find(&td&).removeClass('selectClass');
if($(currentSelectCell).parent().find('td:eq('+(++myColIndex)+')').get().length==0){
$(currentSelectCell).parent().find('td:eq(1)').addClass('selectClass');
$(currentSelectCell).parent().find('td:eq('+(myColIndex)+')').addClass('selectClass');
}else if (event.keyCode == 38){//UP上
event.stopPropagation();
event.preventDefault();
endEdit.call(currentSelectCell);
tb.find(&td&).removeClass('selectClass');
$(currentSelectCell).parent().parent().find('tr:eq('+(myRowIndex-1)+')').find('td:eq('+(myColIndex)+')').addClass('selectClass');
}else if (event.keyCode == 40){//DOWN下
event.stopPropagation();
event.preventDefault();
endEdit.call(currentSelectCell);
tb.find(&td&).removeClass('selectClass');
if($(currentSelectCell).parent().parent().find('tr:eq('+(myRowIndex+1)+')').get().length==0){
$(currentSelectCell).parent().parent().find('tr:eq(0)').find('td:eq('+(myColIndex)+')').addClass('selectClass');
$(currentSelectCell).parent().parent().find('tr:eq('+(myRowIndex+1)+')').find('td:eq('+(myColIndex)+')').addClass('selectClass');
var re=/[0-9,a-z,A-Z]$/;
var str=String.fromCharCode(event.keyCode);
if(re.test(str)){
if(currentEditCell==null&¤tSelectCell!=null){
startEdit.call(currentSelectCell,&&);
alert(re.test(str));
})(jQuery);
微博:最后,如果对安卓感兴趣,请下载安卓108例子:,源码例子文档一网打尽
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:5280次
排名:千里之外
原创:27篇}

我要回帖

更多关于 office在线编辑控件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信