js以excel為模板的打印


使用excel為模板打印的好處是格式容易調整,這種方法要求客戶端系統配置高度統一,譬如excel安裝版本一致,存在服務器上的excel模板必須與客戶端excel版本一致,而且不能用其他版本的excel修改。

javascript打印excel代碼

<script type="text/javascript" >
    function Print_Click() {
        alert("打印測試");
        var Template = "http://172.16.18.217/ExcelDoc/CreateCard.xls";
        var xlApp = new ActiveXObject("Excel.Application");
        var xlBook = xlApp.Workbooks.add(Template);
        var xlsheet = xlBook.ActiveSheet;
        xlsheet.printout;
        xlApp = null;
        xlsheet = null;

    }
</script>

ASP.NET中后台調用javascript打印excel代碼

protected void PrintTestButton_Click(object sender, EventArgs e)
{
    string StrScript;
    StrScript = ("<script type='text/javascript'>");
    StrScript += ("alert(\"打印測試\");");
    StrScript += ("var Template ='http://172.16.18.217/ExcelDoc/CreateCard.xls';");
    StrScript += ("var xlApp = new ActiveXObject('Excel.Application');");
    StrScript += ("if(xlApp== undefined){");
    StrScript += ("alert(\"Excel對象創建失敗\");}else{");
    StrScript += ("var xlBook = xlApp.Workbooks.add(Template);");
    StrScript += ("var xlsheet = xlBook.ActiveSheet;");
    StrScript += ("xlsheet.printout;");
    StrScript += ("xlApp = null;");
    StrScript += ("xlsheet = null;}");
    StrScript += ("</script>");
    this.ClientScript.RegisterStartupScript(this.GetType(), " ", StrScript);
}

C#打印

public int PrintPatientInfo()
{
    PrintExcel pExcel = new PrintExcel("CreateCard.xls");

    Worksheet sheet = pExcel.GetWorksheet();

    sheet.Cells[1, 1] = "建卡信息";
    sheet.Cells[2, 1] = "患者卡號:";
    sheet.Cells[2, 2] = patientCardNum.Trim();
    sheet.Cells[2, 3] = "患者姓名:";
    sheet.Cells[2, 4] = patientName.Trim();
    sheet.Cells[4, 1] = "金額";
    sheet.Cells[4, 2] = "1元";
    sheet.Cells[4, 3] = "日期";
    sheet.Cells[4, 4] = DateTime.Now.ToString("yyyy-MM-dd");
    pExcel.ExecPrint(1);

    return 0;
}

ASP.NET在服務器端用C#組織javascript打印代碼並在IE客戶端打印,還可以指定打印機,最方便

public class PrintExcelJs
{
    private string excelPath;
    private string StrScript;

    public PrintExcelJs(string xslPath)
    {
        excelPath = xslPath;
        StrScript = "<script type='text/javascript'>";
        StrScript += "var Template ='"+excelPath+"';";
        StrScript += "var xlApp = new ActiveXObject('Excel.Application');";
        StrScript += "if(xlApp== undefined){";
        StrScript += "alert(\"Excel對象創建失敗\");}else{";
        StrScript += "var xlBook = xlApp.Workbooks.add(Template);";
        StrScript += "var xlsheet = xlBook.ActiveSheet;";
    }

    public void InsertValueToExcelCell(int i, int j, string strContent)
    {
        StrScript += "xlsheet.cells(" + i.ToString() + "," + j.ToString() + ")";
        StrScript += "=\"" + strContent + "\";";
    }
    
    public void ExecPrint(System.Web.UI.Page page,int numOfPrint=1)
    {
        StrScript += "xlsheet.printout(1,null,1,false,\"PrintGuid\",false,false);";//這段代碼花了我半天時間,因為之前聽說javascript不能指定打印機,存疑,后來終於找到正確的用法了
        StrScript += "xlApp = null;";
        StrScript += "xlsheet = null;}";
        StrScript += "</script>";
        page.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), StrScript);
    }
}

示例代碼:

private void PrintTestButton_Click()
{
    string excelPath = "http://"+Request.Url.Host + @"/ExcelDoc/" + "CreateCard.xls";
    PrintExcelJs pExcel = new PrintExcelJs(excelPath);

    pExcel.InsertValueToExcelCell(1, 1, "XX信息");
    pExcel.InsertValueToExcelCell(2, 1, "患者卡號:");
    pExcel.InsertValueToExcelCell(2, 2, patientCardNum.Trim());
    pExcel.InsertValueToExcelCell(2, 3, "患者姓名:");
    pExcel.InsertValueToExcelCell(2, 4, patientName.Trim());
    pExcel.InsertValueToExcelCell(4, 1, "金額");
    pExcel.InsertValueToExcelCell(4, 2, "1元");
    pExcel.InsertValueToExcelCell(4, 3, "日期");
    pExcel.InsertValueToExcelCell(4, 4, DateTime.Now.ToString("yyyy-MM-dd"));
    pExcel.ExecPrint(this,1);
}

 


免責聲明!

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



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