用jquery-table2excel,进行导出excel

https://files.cnblogs.com/files/liuchenxing/jquery.table2excel.js

用jquery-table2excel,进行导出excel
  jquery-table2excel是一款可以将HTML表格的内容导出到微软Excel电子表格中的jQuery插件。该插件可以根据你的需要导出表格中的内容,不需要的行可以不导出。 它文件体积小,使用非常方便。

 

 1、写好前端的按钮,还需要一个table(要导出的内容存放处)。

  <input type="button" value="导出" class="Button" onclick="Export();" />    <table id='exceltable'><td>内容内容内容</td></table> 

  2、初始化js

        function Export(){    $("#exceltable").table2excel({            //exceltable为存放数据的table        // 不被导出的表格行的CSS class类        exclude: ".noExl",        // 导出的Excel文档的名称        name: "表格-" + new Date().getTime(),        // Excel文件的名称         filename: "表格-" + new Date().getTime() + ".xls",         bootstrap: false       });         } 
    //table2excel插件的可用配置参数有: 

  //exclude:不被导出的表格行的CSS class类。
  //name:导出的Excel文档的名称。
  //filename:Excel文件的名称。
  //exclude_img:是否导出图片。
  //exclude_links:是否导出超链接
  //exclude_inputs:是否导出输入框中的内容。

posted @ 2020-06-23 14:00 青蛙學堂 阅读(1617) | 评论 (0)编辑 收藏

js读取json数据

var json = { contry:{ area:{ man:"12万", women:"10万" } } };

//方式一:使用eval解析

var obj = eval(json);

alert(obj.constructor);

alert(obj.contry.area.women);

//方式二:使用Funtion函数

var strJSON = "{name:'json name'}";//得到的JSON

var obj = new Function("return" + strJSON)();//转换后的JSON对象

alert(obj.name);//json name

alert(obj.constructor);

//复杂一点的json数组数据的解析

var value1 = [{"c01":"1","c02":"2","c03":"3","c04":"4","c05":"5","c06":"6","c07":"7","c08":"8","c09":"9"},

{"c01":"2","c02":"4","c03":"5","c04":"2","c05":"8","c06":"11","c07":"21","c08":"1","c09":"12"},

{"c01":"5","c02":"1","c03":"4","c04":"11","c05":"9","c06":"8","c07":"1","c08":"8","c09":"2"}];

var obj1 = eval(value1);

alert(obj1[0].c01);

//复杂一点的json的另一种形式

var value2 = {"list":[ {"password":"1230","username":"coolcooldool"}, {"password":"thisis2","username":"okokok"}],

"array":[{"password":"1230","username":"coolcooldool"},{"password":"thisis2","username":"okokok"}]};

var obj2 = eval(value2);

alert(obj2.list[0].password);

posted @ 2020-06-16 19:51 青蛙學堂 阅读(585) | 评论 (0)编辑 收藏

Bootstraptable-editable在线编辑表格


bootstrap-table-editable.js
首先来看看bootstrap-table-editable.js这个文件
这个js其实是对x-editable做了一个简单的封装,增加了列的editable属性以及编辑保存后的一些事件。有了这个作为基础,于是我们行内编辑的代码变成了这样。
需要引用的文件如下:
<link href="/Content/bootstrap/css/bootstrap.min.css" rel="stylesheet" />
<link href="~/Content/bootstrap3-editable/css/bootstrap-editable.css" rel="stylesheet" />
<link href="/Content/bootstrap-table/bootstrap-table.min.css" rel="stylesheet" />
<script src="/Scripts/jquery-1.9.1.min.js"></script>
<script src="/Content/bootstrap/js/bootstrap.min.js"></script>
<script src="~/Content/bootstrap3-editable/js/bootstrap-editable.js"></script>
<script src="~/Content/bootstrap-table/bootstrap-table.js"></script>
<script src="/Content/bootstrap-table/locale/bootstrap-table-zh-CN.js"></script>
<script src="~/Content/bootstrap-table/extensions/editable/bootstrap-table-editable.js"></script>
//(****************************************
js 代码
$(function () {
        $("#tb_user").bootstrapTable({
            toolbar: "#toolbar",
            idField: "Id",
            pagination: true,
            showRefresh: true,
            search: true,
            clickToSelect: true,
            queryParams: function (param) {
                return {};
            },
            url: "/Editable/GetUsers",
            columns: [{
                checkbox: true
            }, {
                field: "UserName",
                title: "用户名",
                editable: {
                    type: 'text',
                    title: '用户名',
                    validate: function (v) {
                        if (!v) return '用户名不能为空';
                    }
                }
            }, {
                field: "Age",
                title: "年龄",
            }, {
                field: "Birthday",
                title: "生日",
                formatter: function (value, row, index) {
                    var date = eval('new ' + eval(value).source)
                    return date.format("yyyy-MM-dd");
                }
            },
            {
                field: "DeptName",
                title: "部门"
            }, {
                field: "Hobby",
                title: "爱好"                
            }],
            onEditableSave: function (field, row, oldValue, $el) {
                $.ajax({
                    type: "post",
                    url: "/Editable/Edit",
                    data: row,
                    dataType: 'JSON',
                    success: function (data, status) {
                        if (status == "success") {
                            alert('提交数据成功');
                        }
                    },
                    error: function () {
                        alert('编辑失败');
                    },
                    complete: function () {
                    }
                });
            }
        });
    });
//*********************
后台对应的更新方法
        public JsonResult Edit(User user)
        {
            //更新实体
            return Json(new { }, JsonRequestBehavior.AllowGet);
        }
经过测试,用户名这一列基本可以自由编辑。同样,年龄这一列也可改成这样
复制代码
        {
                field: "Age",
                title: "年龄",
                editable: {
                    type: 'text',
                    title: '年龄',
                    validate: function (v) {
                        if (isNaN(v)) return '年龄必须是数字';
                        var age = parseInt(v);
                        if (age <= 0) return '年龄必须是正整数';
                    }
                }
            }
复制代码
有了上面的知识作为基础,我们来初始化生日这一列:
复制代码
            {
                field: "Birthday",
                title: "生日",
                formatter: function (value, row, index) {
                    var date = eval('new ' + eval(value).source)
                    return date.format("yyyy-MM-dd");
                },
                editable: {
                    type: 'date',
                    title: '生日'
                }
            }
复制代码
表单编辑里面还有一个重要的标签就是select了。上文我们知道x-editable为我们提供了下拉框的编辑模式,比如我们的部门这一列的编辑可以写成这样:
复制代码
        {
                field: "DeptId",
                title: "部门",
                editable: {
                    type: 'select',
                    title: '部门',
                    source:[{value:"1",text:"研发部"},{value:"2",text:"销售部"},{value:"3",text:"行政部"}]
                }
            }
复制代码
 {
                field: "DeptId",
                title: "部门",
                editable: {
                    type: 'select',
                    title: '部门',
                    source: function () {
                        var result = [];
                        $.ajax({
                            url: '/Editable/GetDepartments',
                            async: false,
                            type: "get",
                            data: {},
                            success: function (data, status) {
                                $.each(data, function (key, value) {
                                    result.push({ value: value.ID, text: value.Name });
                                });
                            }
                        });
                        return result;
                    }
                }
            }
//**************************
除了上述几种常见的编辑框,x-editable还为我们提供了复选框组的编辑。比如:
复制代码
       {
                field: "Hobby",
                title: "爱好",
                editable: {
                    type: "checklist",
                    separator:",",
                    source: [{ value: 'bsb', text: '篮球' },
                         { value: 'ftb', text: '足球' },
                         { value: 'wsm', text: '游泳' }],
                }
            }
复制代码

posted @ 2020-06-16 09:51 青蛙學堂 阅读(1679) | 评论 (0)编辑 收藏

Excel VBA 连接数据库操作excel

Excel VBA 连接数据库操作excel
1.连接数据库,查询数据
Private Sub CommandButton1_Click()
'
'Dim conn As ADODB.Connection
'Set conn = New ADODB.Connection
'
'    Dim rs As ADODB.Recordset
'
'    Set rs = New ADODB.Recordset
 
'conn.ConnectionString = "Provider=SQLOLEDB;Server=192.168.*.*;Database=testdb;Uid=sa;Pwd=*****"
'conn.Open
'MsgBox ("连接成功!" & vbCrLf & "数据库状态:" & conn.State & vbCrLf & "数据库版本:" & conn.Version)
' MsgBox ("连接成功!" & conn.State)
'  rs.Open "select id,name from table ", conn
'
'指定页面单元格赋值
' Sheet3.Range("A1:B1").Value = Array("id77777", "caption88888")
'
'设置表头
'    Range("A1:B1").Value = Array("id", "name")
''将数据输出到工作表
'    Range("A2").CopyFromRecordset rs
''关闭连接
'    rs.Close: Set rs = Nothing
'    conn.Close: Set conn = Nothing
End Sub
2.单元格取值赋值
Private Sub CommandButton2_Click()
'指定页面单元格取值
'   MsgBox Sheet3.Range("A3").Value
'指定页面单元格赋值
' Sheet3.Range("A1:B1").Value = 43434343
End Sub
******************************************************
3.单元格选中单击事件,获取指定行指定列
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'MsgBox "777888999"
获取指定行指定列
'If Target.Column = 3 And Target.Row = 5 Then
'If Target.Column = 3 Then
'  MsgBox "你选中了:" & Target.Text & "行:" & Target.Row
 ' End If
'End Sub
***************************************************8
' Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'  If Target.Column = 1 And Target.Row = 1 Then
'  MsgBox "你选中了:" & Target.Text
'  End If
 ' If Target.Column = 3 And Target.Row = 5 Then
'  MsgBox "你选中了:" & Target.Text
 ' End If
 ' End Sub

posted @ 2020-05-25 09:42 青蛙學堂 阅读(485) | 评论 (0)编辑 收藏

将select 查询结果拼接成字串

将select 查询结果拼接成字串
select (select id+'',name+',' from table1 for xml path(''))

posted @ 2020-05-21 14:57 青蛙學堂 阅读(1453) | 评论 (0)编辑 收藏

update table select 值

QL update select语句

最常用的update语法是:

1 2 
UPDATE TABLE_NAME SET column_name1 = VALUE WHRER column_name2 = VALUE

如果我的更新值Value是从一条select语句拿出来,而且有很多列的话,用这种语法就很麻烦

第一,要select出来放在临时变量上,有很多个很难保存。 第二,再将变量进行赋值。

列多起来非常麻烦,能不能像Insert那样,把整个Select语句的结果进行插入呢? 就好象下面::

1 2 3 
INSERT INTO table1 (c1, c2, c3) (SELECT v1, v2, v3 FROM table2)

答案是可以的,具体的语法如下:

1 2 3 4 5 6 
UPDATE table1 alias SET (column_name,column_name ) = ( SELECT (column_name, column_name) FROM table2 WHERE column_name = alias.column_name) WHERE column_name = VALUE

下面是这样一个例子: 两个表a、b,想使b中的memo字段值等于a表中对应id的name值 表a:

1 2 3 4 
id    name  1     王  2     李  3     张

表b:

1 2 3 4 
id    ClientName    1  2  3

(MS SQL Server)语句:

1 
UPDATE b   SET   ClientName    = a.name    FROM a,b    WHERE a.id = b.id

(Oralce)语句:

1 
UPDATE b   SET   (ClientName)    =   (SELECT name FROM a WHERE b.id = a.id)

update set from 语句格式 当where和set都需要关联一个表进行查询时,整个update执行时,就需要对被关联的表进行两次扫描,显然效率比较低。

对于这种情况,Sybase和SQL SERVER的解决办法是使用UPDATE…SET…FROM…WHERE…的语法,实际上就是从源表获取更新数据。

在 SQL 中,表连接(left join、right join、inner join 等)常常用于 select 语句。 其实在 SQL 语法中,这些连接也是可以用于 update 和 delete 语句的,在这些语句中使用 join 还常常得到事半功倍的效果。

1 2 
UPDATE T_OrderForm SET T_OrderForm.SellerID =B.L_TUserID FROM T_OrderForm A LEFT JOIN T_ProductInfo   B ON B.L_ID=A.ProductID

用来同步两个表的数据!

Oralce和DB2都支持的语法:

1 
UPDATE A SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)

MS SQL Server不支持这样的语法,相对应的写法为:

1 
UPDATE A  SET A1 = B1, A2 = B2, A3 = B3  FROM A LEFT JOIN B ON A.ID = B.ID

个人感觉MS SQL Server的Update语法功能更为强大。MS SQL SERVER的写法:

1 
UPDATE A SET A1 = B1, A2 = B2, A3 = B3 FROM A, B WHERE A.ID = B.ID

在Oracle和DB2中的写法就比较麻烦了,如下:

1 2 
UPDATE A SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID) WHERE ID IN (SELECT B.ID FROM B WHERE A.ID = B.ID)

posted @ 2020-05-19 14:42 青蛙學堂 阅读(812) | 评论 (0)编辑 收藏

C# NEWTONSOFT.JSON读取json文件

public static void Readjson()
{
string jsonfile = "D://tsconfig1.json";

using (System.IO.StreamReader file = System.IO.File.OpenText(jsonfile))
{
using (JsonTextReader reader = new JsonTextReader(file))
{
JObject o = (JObject)JToken.ReadFrom(reader);
string a = o["lotname"].ToString();
var b = o["other"];
var c = b["lotaddress"];
var d = o["devices"];
foreach(JObject e in d)
{
var deviceID = e["deviceID"];
var name = e["name"];
var IP = e["IP"];
}
}
}

}

 

 

 

tsconfig1.json文件内容

{
"lotname": "停车系统",
"devices": [
{
"deviceID": "EI1001",
"name": "东道进口相机",
"type": "进口",
"IP": "192.168.1.100"
},
{
"deviceID": "EI1002",
"name": "东道进口语音屏",
"type": "进口",
"IP": "192.168.1.102"
},
{
"deviceID": "EO1003",
"name": "东道出口相机",
"type": "出口",
"IP": "192.168.1.103"
},
{
"deviceID": "EO1004",
"name": "东道出口语音屏",
"type": "出口",
"IP": "192.168.1.104"
}
],
"other": { "lotname": "wz001", "lotaddress": "wenzhou" }
}

注意:记事本另存为 以上内容时编码选择 U-TF8

posted @ 2020-05-15 13:16 青蛙學堂 阅读(2258) | 评论 (0)编辑 收藏

c# DataTable转换到List

DataTable转换到List

方法一:

public static IList<T> ConvertTo<T>(DataTable table)  
{  
   if (table == null)  
   {  
       return null;  
   }  
    
   List<DataRow> rows = new List<DataRow>();  
    
   foreach (DataRow row in table.Rows)  
   {  
       rows.Add(row);  
   }  
    
   return ConvertTo<T>(rows);  
}  
    
public static IList<T> ConvertTo<T>(IList<DataRow> rows)  
{  
   IList<T> list = null;  
    
   if (rows != null)  
   {  
       list = new List<T>();  
    
       foreach (DataRow row in rows)  
       {  
           T item = CreateItem<T>(row);  
           list.Add(item);  
       }  
   }  
    
   return list;
}    
    
public static T CreateItem<T>(DataRow row)    
{
    T obj = default(T);    
    if (row != null)    
    {    
       obj = Activator.CreateInstance<T>();    
    
       foreach (DataColumn column in row.Table.Columns)    
       {    
           PropertyInfo prop = obj.GetType().GetProperty(column.ColumnName);    
           try 
           {    
               object value = row[column.ColumnName];    
               prop.SetValue(obj, value, null);    
           }    
           catch 
           {  //You can log something here     
               //throw;    
           }    
       }    
    }    
    
return obj;    
}
*************************************

/// </summary>
        /// <param name="Json"></param>
        /// <returns></returns>
        public static object ToJson(this string Json)
        {
            return JsonConvert.DeserializeObject(Json);
        }
        public static string ToJson(this object obj)
        {
            IsoDateTimeConverter idtc = new IsoDateTimeConverter();
            idtc.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
            JsonSerializerSettings jsonSettings = new JsonSerializerSettings
            {
            };
            jsonSettings.Converters.Add(idtc);
            return JsonConvert.SerializeObject(obj, jsonSettings);
        }







posted @ 2020-05-15 11:23 青蛙學堂 阅读(2312) | 评论 (0)编辑 收藏

C# DataTable 转换成JSON数据 三种方法

在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List<T>、DataTable转换为Json格式。特别在使用Extjs框架的时候,Ajax异步请求的数据格式就是Json。鉴于此,我今天来分享将DataTable 转换成 Json的3种方法。换句话说如何在ASP.NET将一个DataTable序列化为 Json数组。或者如何从一个DataTable返回一个Json字符串。这篇文章将采用StringBuilder,JavaScriptSerializer和 Json.Net DLL (Newtonsoft) 这3种方法实现这一目标。
Json概述
JavaScript Object Notation (Json)是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。这些特性使Json成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。Json采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯,包括C、C++、C#、Java、JavaScript、Perl、Python等等。
这些特性使Json成为一种理想的数据交换语言。因此 基于AJAX应用程序,Json已经成为一种用于数据交换的流行格式。总之,Json是一种存储和交换数据的语法,易于操作,也是除XML之外的不二之选。
步骤:
首先我们从Microsoft SQL Server 获取数据到DataTable,也可以给DataTable动态添加行。代码如下:
private DataTable getData()
{
DataTable dt = new DataTable();
dt.Columns.Add("编号", typeof(Int32));
dt.Columns.Add("姓名", typeof(string));
dt.Columns.Add("性别", typeof(string));
dt.Columns.Add("学历", typeof(string));
dt.Rows.Add(1, "王超", "男", "本科");
dt.Rows.Add(2, "周丽", "女", "专科");
dt.Rows.Add(3, "李娟", "女", "专科");
dt.Rows.Add(4, "杨明", "男", "硕士");
dt.Rows.Add(5, "张德", "男", "本科");
return dt;
}
下面开始通过每一种方法实现DataTable转换成 Json 对象。
方法1:使用StringBuilder
这是Json样本数据的样子: {"姓名 ":"张三", "年龄":"30"}。Json里用花括号保存对象,它可以包含多个名称/值对。所以使用StringBuilder我们可以创建一个类似的Json字符串。
由于要使用StringBuilder类,我们首先需要导入System.Text命名空间,如下:
using System.Text;
下面的代码将生成一个Json字符串,遍历DataTable的行和列,获取数据,添加到一个StringBuilder对象 JsonString,然后返回这个对象。
public string DataTableToJson(DataTable table)
{
var JsonString = new StringBuilder();
if (table.Rows.Count > 0)
{
JsonString.Append("[");
for (int i = 0; i < table.Rows.Count; i++)
{
JsonString.Append("{");
for (int j = 0; j < table.Columns.Count; j++)
{
if (j < table.Columns.Count - 1)
{
JsonString.Append("\"" + table.Columns[j].ColumnName.ToString() + "\":" + "\"" + table.Rows[i][j].ToString() + "\",");
}
else if (j == table.Columns.Count - 1)
{
JsonString.Append("\"" + table.Columns[j].ColumnName.ToString() + "\":" + "\"" + table.Rows[i][j].ToString() + "\"");
}
}
if (i == table.Rows.Count - 1)
{
JsonString.Append("}");
}
else
{
JsonString.Append("},");
}
}
JsonString.Append("]");
}
return JsonString.ToString(); 
}
方法2:使用 JavaScriptSerializer.
首先我们添加System.Web.Script.Serialization命名空间,如下:
using System.Web.Script.Serialization;
JavaScriptSerializer这个类是由异步通信层内部使用来序列化和反序列化数据。如果序列化一个对象,就使用序列化方法。反序列化Json字符串,使用Deserialize或DeserializeObject方法。在这里,我们使用序列化方法得到Json格式的数据。代码以下:
public string DataTableToJsonWithJavaScriptSerializer(DataTable table)
JavaScriptSerializer jsSerializer = new JavaScriptSerializer(); 
List < Dictionary < string, object >> parentRow = new List < Dictionary < string, object >> (); 
Dictionary < string, object > childRow; 
foreach(DataRow row in table.Rows)
childRow = new Dictionary < string, object > (); 
foreach(DataColumn col in table.Columns)
childRow.Add(col.ColumnName, row[col]); 
parentRow.Add(childRow); 
return jsSerializer.Serialize(parentRow); 
}
方法3:使用Json.Net DLL (Newtonsoft)。
这个方法中要添加Json.Net DLL引用,我们可以从Newtonsoft下载Json.Net DLL,再导入命名空间,代码如下:
using Newtonsoft.Json;
public string DataTableToJsonWithJsonNet(DataTable table)
string JsonString=string.Empty; 
JsonString = JsonConvert.SerializeObject(table); 
return JsonString; 
}
StringBuilder方法的全部代码:
using System;
using Susing System.Data;
public partial class Default2 : System.Web.UI.Page
private string sasss;
protected void Page_Load(object sender, EventArgs e)
{
DataTable table = getData();
sasss = DataTableToJson(table);
Response.Write(sasss + "<br/>");
}
public string DataTableToJson(DataTable table)
{
var JsonString = new StringBuilder();
if (table.Rows.Count > 0)
{
JsonString.Append("[");
for (int i = 0; i < table.Rows.Count; i++)
{
JsonString.Append("{");
for (int j = 0; j < table.Columns.Count; j++)
{
if (j < table.Columns.Count - 1)
{
JsonString.Append("\"" + table.Columns[j].ColumnName.ToString() + "\":" + "\"" + table.Rows[i][j].ToString() + "\",");
}
else if (j == table.Columns.Count - 1)
{
JsonString.Append("\"" + table.Columns[j].ColumnName.ToString() + "\":" + "\"" + table.Rows[i][j].ToString() + "\"");
}
}
if (i == table.Rows.Count - 1)
{
JsonString.Append("}");
}
else
{
JsonString.Append("},");
}
}
JsonString.Append("]");
}
return JsonString.ToString(); 
}
private DataTable getData()
{
DataTable dt = new DataTable();
dt.Columns.Add("编号", typeof(Int32));
dt.Columns.Add("姓名", typeof(string));
dt.Columns.Add("性别", typeof(string));
dt.Columns.Add("学历", typeof(string));
dt.Rows.Add(1, "王超", "男", "本科");
dt.Rows.Add(2, "周丽", "女", "专科");
dt.Rows.Add(3, "李娟", "女", "专科");
dt.Rows.Add(4, "杨明", "男", "硕士");
dt.Rows.Add(5, "张德", "男", "本科");
return dt;
}
}

posted @ 2020-05-15 10:49 青蛙學堂 阅读(2711) | 评论 (0)编辑 收藏

C# DataTable 转换成JSON数据

引用名称空知间using System.Web.Script.Serialization;(如果无法引用,请道添加程序集)
JavaScriptSerializer js = new JavaScriptSerializer();
        //序列化成回json字符串
         string json= js.Serialize("数据库查询出答来的数据");
/// <summary>
        /// 将datatable转换为json  
        /// </summary>
        /// <param name="dtb">Dt</param>
        /// <returns>JSON字符串</returns>
        public static string Dtb2Json(DataTable dtb)
        {
            JavaScriptSerializer jss = new JavaScriptSerializer();
            System.Collections.ArrayList dic = new System.Collections.ArrayList();
            foreach (DataRow dr in dtb.Rows)
            {
                System.Collections.Generic.Dictionary<string, object> drow = new System.Collections.Generic.Dictionary<string, object>();
                foreach (DataColumn dc in dtb.Columns)
                {
                    drow.Add(dc.ColumnName, dr[dc.ColumnName]);
                }
                dic.Add(drow);
            }
            //序列化  
            return jss.Serialize(dic);
        }

posted @ 2020-05-15 10:34 青蛙學堂 阅读(134) | 评论 (0)编辑 收藏

仅列出标题
共43页: First 3 4 5 6 7 8 9 10 11 Last 
<2012年4月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

导航

统计

常用链接

留言簿(8)

随笔分类

随笔档案

收藏夹

青蛙学堂

最新评论

阅读排行榜

评论排行榜