easyui導出當前datagrid數據(含表頭)


JS代碼

//導出當前DataGrid數據
function doExportCommon() {
    var list = getCheckedRowCommon();
    var exportList = [];
    if (list.length <= 0) {
        showMessage("請至少勾選一條數據");
        return;
    }

    var titleList = JSON.parse(getGridTitle());
    exportList.push(titleList);
    for (var i = 0; i < list.length; i++) {
        var row = list[i];
        var rowStr = "{";
        //這里通過字段去匹配相應的行的數據
        for (var field in titleList) {
            var str = row[field];
            if (str) {
                while (str.toString().indexOf('\n') > 0) {
                    str = str.replace('\n', "<br>");  
                }
            } else { str = ""; }
            rowStr += "\"" + field + "\":\"" + str + "\","; //過濾換行符
        }
        rowStr = rowStr.substr(0, rowStr.length - 1);
        rowStr += "}";
        exportList.push(JSON.parse(rowStr));
    }
    var strhtml = JSON.stringify(exportList);
    //調用后台導出方法
    callbackObj.showExportMsg(strhtml);
}

//該方法為自定義勾選框時,根據已勾選的勾選框獲取行的數據
//獲取勾選行,返回勾選行數據
function getCheckedRowCommon() {
    var data = $('#table').datagrid('getRows');
    var checkitems=$("#table_div input[name='checkItem']:checkbox:checked");
    var rowList = [];
    for (var i = 0; i < checkitems.length; i++) {
        var rowTr = checkitems[i].parentElement.parentElement.parentElement;
        var selectIndex = $(rowTr).attr("datagrid-row-index");
        rowList.push(data[selectIndex]);
    }
    return rowList;
}

//這里返回的是字段名稱和表頭文字的鍵值對
//根據datagrid顯示的表頭,獲取文字 function getGridTitle() { var titlename = "{"; var fields = $('#table').datagrid('getColumnFields'); for (var i = 0; i < fields.length; i++) { var option = $('#table').datagrid('getColumnOption', fields[i]); if (option.field != "checkItem" && option.hidden != true) { //過濾勾選框和隱藏列 titlename += "\"" + option.field + "\":\"" + option.title + "\","; } } titlename = titlename.substr(0, titlename.length - 1); titlename += "}"; return titlename; }

 后台導出方法(winform)

 這里應用到Aspose.Cells用來讀寫Excel

public class CallbackObjectForJs
{
        public MainForm mainForm;    //主頁面

        public void exportExcel(string data)
        {
            string saveFileName = "";
            SaveFileDialog saveDialog = new SaveFileDialog();
            saveDialog.DefaultExt = "xlsx";
            saveDialog.Filter = "Excel文件|*.xlsx";
            saveDialog.FileName = DateTime.Now.Ticks.ToString();
            saveDialog.ShowDialog();
            saveFileName = saveDialog.FileName;
            if (saveFileName.IndexOf(":") < 0) return; //被點了取消

            Workbook wb = new Workbook(FileFormatType.Xlsx);
            try
            {
                Worksheet sheet = wb.Worksheets[0];
                sheet.Name = "Sheet1";
                // 為單元格添加樣式
                Aspose.Cells.Style style = wb.CreateStyle();
                style.HorizontalAlignment = TextAlignmentType.Center;  //設置居中
                style.IsTextWrapped = true;     //設置自動換行
                //style.Font.Size = 12;//文字大小
                //style.Font.IsBold = true;//粗體

                DataTable dt = JsonConvert.DeserializeObject<DataTable>(data);
                //遍歷DataTable
                for (int i = 0; i < dt.Rows.Count; i++) //
                {
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        string value = dt.Rows[i][j].ToString();
                        while (value.Contains("<br>"))
                        {
                            value = value.Replace("<br>", "\n");
                        }
                        sheet.Cells[i, j].PutValue(value);
                        sheet.Cells[i, j].SetStyle(style);
                    }
                }
                //設置寬度、高度自適應
                setColumnWithAuto(sheet);
                wb.Save(saveFileName, new OoxmlSaveOptions(Aspose.Cells.SaveFormat.Xlsx));
               
                //通過Invoke激活主線程,彈出框置頂。
                mainForm.Invoke(new MethodInvoker(delegate
                {
                    MessageBox.Show(mainForm, "導出成功");
                }));
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message.ToString());
                return;
            }
        }    

        /// <summary>
        /// 設置表頁的列寬度自適應
        /// </summary>
        /// <param name="sheet">worksheet對象</param>
        public void setColumnWithAuto(Worksheet sheet)
        {
            Cells cells = sheet.Cells;
            int columnCount = cells.MaxColumn + 1;  //獲取表頁的最大列數
            int rowCount = cells.MaxRow;        //獲取表頁的最大行數

            sheet.AutoFitRows();    //設置行高自適應
            for (int col = 0; col < columnCount; col++)
            {
                sheet.AutoFitColumn(col, 0, rowCount);
            }
            for (int col = 0; col < columnCount; col++)
            {
                cells.SetColumnWidthPixel(col, cells.GetColumnWidthPixel(col) + 30);
            }
        }
}    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM