精华内容
下载资源
问答
  • POI复制Excel模板并填充数据

    千次阅读 2018-12-18 10:46:21
    //如果这行没有了,整个公式都不会有自动计算的效果的 sheet.setForceFormulaRecalculation(true); 如果是xls格式的,就改为:  POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(file))...

    ---------------------------------------------------------------------------------------------
    [版权申明:本文系作者原创,转载请注明出处] 
    文章出处:https://blog.csdn.net/sdksdk0/article/details/85060879

    作者:朱培      ID:sdksdk0     
    --------------------------------------------------------------------------------------------

    我们最近需要对系统加一个报表导出的功能,可以通过POI直接导出,导出后的excel文件需要支持在office里面修改数据后图表也会自动变换。方法一可以使用jfreechart+poi,但是这种方法生成的图表是一张图片,不能在office中自动修改;第二种方法是poi调用 office的宏,它需要调用自定义的.dll 文件,也需要在windows环境中,所以不适用。

    我这边采用的是自定义 excel 模版,然后在模版定义图表 。 然后通过POI改变图表数据区域的数据值。从而达到改变图表的目的。

    1、先准备一个excel 模版,里面把需要的数据写好,然后先自定义图表,例如图表样式如下:

    2、把数据区域的内容情况,数据清空之后如下:

     

    3、在javaee工程中引入poi的相关jar包,并把excel模板放入相应工程的WEB-INF目录下,名称换为temple.xlsx

    <dependency>
    		    <groupId>org.apache.poi</groupId>
    		     <artifactId>poi-ooxml</artifactId>
    		    <version>3.12</version>
    		</dependency>
    		 
    		<dependency>
    			<groupId>org.apache.poi</groupId>
    			<artifactId>poi</artifactId>
    			<version>3.12</version>
    		</dependency>
    		<dependency>
    			<groupId>org.apache.poi</groupId>
    			<artifactId>poi-ooxml-schemas</artifactId>
    			<version>3.12</version>
    		</dependency> 

    4、读取模板文件,这里读取的是xlsx方式的,

                //excel模板路径
    			File f = new File(this.getClass().getResource("/").getPath());
    		    String filePath = f+File.separator+"WEB-INF"+File.separator+"temple.xlsx";
    			File file = new File(filePath);
    			FileInputStream in =new FileInputStream(file);
    			//读取excel模板
    			XSSFWorkbook wb = new XSSFWorkbook(in);
    			//读取了模板内所有sheet内容
    			XSSFSheet sheet = wb.getSheetAt(0);
    			//如果这行没有了,整个公式都不会有自动计算的效果的
    			sheet.setForceFormulaRecalculation(true);

    如果是xls格式的,就改为:

                POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(file));
                //读取excel模板
                HSSFWorkbook wb = new HSSFWorkbook(fs);

               //读取了模板内所有sheet内容
                HSSFSheet sheet = wb.getSheetAt(0);

    5、找到相应的数据行,进行数据填充,要从0开始计数,excel中的第1行,读取的时候是从0开始的,例如我这边添加表头,填充历史客流、年龄等信息进去

    Calendar cal = Calendar.getInstance();
    			String publishTime = DateUtil.format(cal.getTime(), "yyyy-MM-dd HH:mm:ss");
    			if(null==name){
    				sheet.getRow(1).getCell(0).setCellValue("景区:全部");
    			}else{
    				sheet.getRow(1).getCell(0).setCellValue("景区:"+name);
    			}
    			if(null==beginTime){
    				sheet.getRow(1).getCell(2).setCellValue("时间:全部");
    			}else{
    				sheet.getRow(1).getCell(2).setCellValue("时间:"+beginTime+"~"+endTime);
    			}
    			sheet.getRow(1).getCell(6).setCellValue("导出时间:"+publishTime);
    			
    			//历史客流
    			int t1=3;
    			Map<String, String> param = initParam(null,beginTime, endTime);
    			List<Map<String, Object>> daycountlist = dayCountService.selectHistoryDayCountList(null,null,null,name,param.get("beginTime"), param.get("endTime"),12);
    			for (Map<String, Object> map2 : daycountlist) {
                    for (Map.Entry<String, Object> m : map2.entrySet()) {
                        sheet.getRow(t1).getCell(1).setCellValue(m.getKey());
    				    sheet.getRow(t1).getCell(2).setCellValue(Integer.parseInt(m.getValue().toString()));
    				    t1++;
                    }
                }
    //性别
    			Map<String, Object> sexInfo = sexCountService.selectContrastsInfo(name, beginTime, endTime);
    			int s1=30;
    			for (Object v : sexInfo.values()) {
    				   sheet.getRow(s1).getCell(2).setCellValue(Double.parseDouble(v.toString())/100.0);
    				   s1++;
    			}
    			//年龄
    			Map<String, Object> ageInfo = ageCountService.selectContrastsInfo(name, beginTime, endTime);
    			int s2=33;
    			for (Object v : ageInfo.values()) {
    				   sheet.getRow(s2).getCell(2).setCellValue(Double.parseDouble(v.toString())/100.0);
    				   s2++;
    			}

    6、保存文件

    // 保存文件的路径
    			String realPath = "/mnt/app/tomcat/webapps/uploadfile/";
    			if(null==name){
    				name="全部";
    			}
    			String newFileName = "report-" +name+"-"+ DateUtil.getAllTime()+ ".xlsx";
    			// 判断路径是否存在
    			File dir = new File(realPath);
    			if (!dir.exists()) {
    				dir.mkdirs();
    			}
    			//修改模板内容导出新模板
    			FileOutputStream out = new FileOutputStream(realPath+newFileName);
    			wb.write(out);
    			out.close();

    7、将文件路径返回给前端,直接给前端一个文件的url链接,让他自己location.href跳转就可以拿到文件了

    map.put("url", "/uploadfile/"+newFileName);

    或者也可以使用response返回

    //返回文件给前端
    FileUtil.downloadFiles(response, realPath+newFileName);

    
    
     public static void downloadFiles(HttpServletResponse response,
                String filePath) {
            response.setContentType("application/octet-stream");
            response.setCharacterEncoding("UTF-8");
            FileInputStream fs = null;
            BufferedInputStream buff = null;
            OutputStream myout = null;
    
            try {
                File file = new File(filePath.trim());
                if (file.exists()) {
                    String fileName = file.getName();
                    fs = new FileInputStream(file);
                    response.addHeader(
                            "Content-Disposition",
                            "attachment;filename="
                                    + URLEncoder.encode(fileName, "UTF-8"));
                    buff = new BufferedInputStream(fs);
                    byte[] b = new byte[1024];
                    long k = 0;
                    myout = response.getOutputStream();
                    while (k < file.length()) {
                        int j = buff.read(b, 0, 1024);
                        k += j;
                        myout.write(b, 0, j);
                    }
                    buff.close();
                } else {
                    PrintWriter os = response.getWriter();
                    os.write("文件不存在");
                    os.close();
                }
                if (myout != null) {
                    myout.flush();
                    myout.close();
                }
                if (fs != null) {
                    fs.close();
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (myout != null) {
                    try {
                        myout.flush();
                        myout.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
    
        }

    8、导出后效果如下,而且手动在excel中修改数据,图表可以自动变换

     

     

     

    展开全文
  • 复制网站zencart模板的方法

    千次阅读 2013-06-28 08:51:06
    首先说明的是,这里只是说明复制网站模板的理论,用于学习用途,复制并使用未经授权的模板是非法的。 第一次写这类说明,没有经验,欢迎大家指正、补充。 这里以zencart或者osc的模板为例,其他的模板也是同样的...
    首先说明的是,这里只是说明复制网站模板的理论,用于学习用途,复制并使用未经授权的模板是非法的。
    第一次写这类说明,没有经验,欢迎大家指正、补充。
    这里以zencart或者osc的模板为例,其他的模板也是同样的方法。
    1. 首先在你的模板目录下,建立一个新的模板,例如:\includes\templates\mytemplate\
    复制\includes\templates\template_default下的所有目录和文件到新的目录中
    2. 用文本编辑器修改\includes\templates\mytemplate\template_info.php,修改其中的名称、版本、作者等内容。
    3. 在后台打开新的模板,然后再工具-外观控制中,点击重置
    4. 获取网站模板的图片
    用整站下载软件实现,例如Teleport Pro,下载全站的所有图形文件,要保留原站的文件结构。
    图片通常都在/images目录下,将下载到的/images下的图形文件都复制到zencart的/images目录下。
    5. 获取网站模板的按钮
    也可以用Teleport Pro下载所有按钮,通常是英文的,osc的按钮图片在/includes/languages/english/images/buttons目录下。
    将下载的按钮保存到zencart的按钮目录/includes/templates/mytemplate/buttons/english/ 和 /includes/templates/mytemplate/buttons/schinese/ 中,在schinese目录中的按钮,可以自己用图像处理软件转换成中文。
    osc模板中,可供下载的按钮有:
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_address_book.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_add_address.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_back.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_buy_now.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_change_address.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_checkout.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_confirm_order.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_continue.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_continue_shopping.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_delete.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_edit_account.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_in_cart.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_login.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_notifications.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_quick_find.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_remove_notifications.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_reviews.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_search.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_shipping_options.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_tell_a_friend.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_update.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_update_cart.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_write_review.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/small_delete.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/small_edit.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/small_view.gif
    类似的,ZenCart模板的按钮有
    http://www.domainname.com/ZenCart/includes/languages/english/images/buttons/button_add_address.gif
    http://www.domainname.com/ZenCart/includes/languages/english/images/buttons/button_back.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_buy_now.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_change_address.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_checkout.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_confirm_order.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_continue.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_continue_shopping.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_delete.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_download.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_in_cart.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_login.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_next.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_ppcheckout.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_prev.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_redeem.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_return_to_product_list.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_reviews.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_search.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_send.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_shipping_estimator.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_sold_out.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_sold_out_sm.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_submit.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_TellAFriend.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_tell_a_friend.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_unsubscribe.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_update.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_update_cart.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_write_review.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/small_delete.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/small_edit.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/small_view.gif
    上面的列表中,自己替换www.domainname.com/osc 或者 www.domainname.com/zencart 为你需要复制的网站地址。
    6. 获取网站模板的CSS文件。osc的stylesheet.css文件在根目录下。stylesheet.css文件的具体路径在查看页面源代码时能看到。
    打开获得的stylesheet.css文件,剪贴到/includes/templates/mytemplate/css/stylesheet.css文件中,追加在原来的css文件后,不要覆盖原有的内容。
    7. 打开需要复制的zencart或者osc网站,查看源代码。(有些网站不允许你查看源代码,要一些技巧,这里就不详细讨论这个问题了)
    8. 在源代码中复制
    <!– header //–> 到 <!– header_eof //–> 之间的内容作为\includes\templates\mytemplate\common\tpl_header.php,删除该文件内原来的内容。
    <!– footer //–> 到 <!– footer_eof //–> 之间的内容作为\includes\templates\mytemplate\common\tpl_footer.php,删除该文件内原来的内容。
    (有些模板把边框部分的显示也放到header.php中,那么你需要找出属于边框的部分并删除)
    9. 现在,整个网站的外观已经基本出来了。需要替换上面的这两个文件内的链接,这里是模板转换的关键。根据下面的模式替换,第一行是需要替换的类似链接,第二行是正确的代码:
    http://www.domainname.com/osc/index.php
    <?php echo zen_href_link(FILENAME_DEFAULT); ?>
    http://www.domainname.com/osc/account.php
    <?php echo zen_href_link(FILENAME_ACCOUNT, ”, ‘SSL’); ?>
    http://www.domainname.com/osc/shopping_cart.php
    <?php echo zen_href_link(FILENAME_SHOPPING_CART, ”, ‘NONSSL’); ?>
    http://www.domainname.com/osc/checkout_shipping.php
    <?php echo zen_href_link(FILENAME_CHECKOUT_SHIPPING, ”, ‘SSL’); ?>
    http://www.domainname.com/osc/shipping.php
    <?php [...]
    如何修改模板宽度? 
    打开includes/templates/YOUR_TEMPLATE/css/stylesheet.css文件将宽度750px改为您需要的宽度。 


    将: 


    .centershop { 
    padding: 0px; 
    margin: 0px auto; 
    position: relative; 
    text-align: left; 
    width: 750px !important; 


    改为: 


    .centershop { 
    padding: 0px; 
    margin: 0px auto; 
    position: relative; 
    text-align: left; 
    width: 100% !important; 


    将: 


    TABLE.header { 
    background-image: url(../images/header_bg.jpg); 
    background-repeat: repeat-x; 
    width: 750px !important; 
    background-color: #ffffff; 
    border-right: 1px solid #9a9a9a; 
    border-left: 1px solid #9a9a9a; 
    border-bottom: 1px solid #9a9a9a; 


    改为: 


    TABLE.header { 
    background-image: url(../images/header_bg.jpg); 
    background-repeat: repeat-x; 
    width: 100% !important; 
    background-color: #ffffff; 
    border-right: 1px solid #9a9a9a; 
    border-left: 1px solid #9a9a9a; 
    border-bottom: 1px solid #9a9a9a; 


    将: 


    .main_page{ 
    width: 750px !important; 
    background-color: #ffffff; 
    border-right: 1px solid #9a9a9a; 
    border-left: 1px solid #9a9a9a; 
    border-bottom: 1px solid #9a9a9a; 
    padding: 5px; 


    改为: 


    .main_page{ 
    width: 100% !important; 
    background-color: #ffffff; 
    border-right: 1px solid #9a9a9a; 
    border-left: 1px solid #9a9a9a; 
    border-bottom: 1px solid #9a9a9a; 
    padding: 5px; 


    将: 


    TD.headerNavigation { 
    width: 750px !important; 
    position: relative; 
    vertical-align:middle; 
    font-family: Verdana, Arial, sans-serif; 
    font-size: 11px; 
    font-weight:bold; 
    color:#000000; 
    letter-spacing:1px; 
    padding: 5px; 


    改为: 


    TD.headerNavigation { 
    vertical-align:middle; 
    font-family: Verdana, Arial, sans-serif; 
    font-size: 11px; 
    font-weight:bold; 
    color:#000000; 
    letter-spacing:1px; 
    padding: 5px; 


    提示:宽度属性有好几处,全部都需要修改。
    网上说zencart的二次开发以及模版的开发都相当困难,这几天尝试修改了一下,确实如此。
    zencart的源代码隐藏的很深,并且其整体架构设计的与我们的思维有所出入。
    对于zencart模版的制作和修改来说,相对于ZenCart的二次开发来说相对简单一些。
    模版的制作,主要是修改CSS代码和替换一些图片,比如Logo、Banner等图片的替换,整个导航栏的修改,这个难度不大,我们只要根据查看浏览器上 显示的HTML源代码,确定那个类或者属性需要修改,进而转到CSS文件找到这个要修改的地方进行修改就可以了(注意:事先对文件备份时必要的)。
    模版的制作相对于修改已有的模版来说难度稍有提高。
    ZenCart模版是HTML与PHP代码是混在一块的,很伤神。如果想重头开发一套ZenCart模版,难度无疑比修改别人的模版要大的多。不过我觉得独立去开发一套模版没有多大必要,我们多多少少都可以借用已有的模版,在那上面做修改,除非 你是想测试一下自己对zencart的掌握水平有多深。
    二次开发就需要对zencart的代码了如指掌了(当然如果开发一些小插件就除外了),zencart的整体架构和我们的思维有一些不同,我最近看到的部分代码也都是按函数封装,而非按照类封装的,并且隐藏的相当深。网上有一张关于zencart加载流程的图片,不过就我个人根据源代码的分析来看,那张图片好像不大正确,可能是版本比较早的时候的zencart的加载流程。
    下面是我根据代码整理的一下部分的加载流程,记在这里,以供以后参考(针对版本1.38)。
    index.php中加载includes/application_top.php
    application_top.php文件中加载includes/extra_configures/目录下的各个配置文件,继而加载autoload_func.php文件、counter.php文件。
    includes/extra_configures/多为配置文件和入侵检测文件(注入检测)。
    initsystem.php文件中加载了includes/auto_loaders/目录下的文件(不包括config.core.php文件),主要是config.ultimate_seo.php文件(该文件主要内容是$autoLoadConfig数组)。
    关于代码的,暂时就写到这里,以后看过之后再续上。
    关于前台布局上,我看到主要有两种,一种是三栏的、一种两栏。
    我主要接触的是三栏的。这种左右两侧的是通过后台设置的,变化的是中间部分。通过地址栏里面的main_page参数来确定(这样加大了源代码分析的难度)。
    其他的改日继续写,先睡觉去。
    展开全文
  • zen cart复制盗用网站模板的方法

    千次阅读 2010-02-03 15:32:00
    首先说明的是,这里只是说明复制网站模板的理论,用于学习用途,复制并使用未经授权的模板是非法的。第一次写这类说明,没有经验,欢迎大家指正、补充。这里以zen cart或者osc的模板为例,其他的模板也是同样的方法...

    首先说明的是,这里只是说明复制网站模板的理论,用于学习用途,复制并使用未经授权的模板是非法的。
    第一次写这类说明,没有经验,欢迎大家指正、补充。
    这里以zen cart或者osc的模板为例,其他的模板也是同样的方法。
    1. 首先在你的模板目录下,建立一个新的模板,例如:/includes/templates/mytemplate/
    复制/includes/templates/template_default下的所有目录和文件到新的目录中
    2. 用文本编辑器修改/includes/templates/mytemplate/template_info.php,修改其中的名称、版本、作者等内容。
    3. 在后台打开新的模板,然后再工具-外观控制中,点击重置
    4. 获取网站模板的图片
    用整站下载软件实现,例如Teleport Pro,下载全站的所有图形文件,要保留原站的文件结构。
    图片通常都在/images目录下,将下载到的/images下的图形文件都复制到zen cart的/images目录下。
    5. 获取网站模板的按钮
    也可以用Teleport Pro下载所有按钮,通常是英文的,osc的按钮图片在/includes/languages/english/images/buttons目录下。
    将下载的按钮保存到zen cart的按钮目录/includes/templates/mytemplate/buttons/english/ 和 /includes/templates/mytemplate/buttons/schinese/ 中,在schinese目录中的按钮,可以自己用图像处理软件转换成中文。
    osc模板中,可供下载的按钮有:
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_address_book.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_add_address.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_back.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_buy_now.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_change_address.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_checkout.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_confirm_order.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_continue.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_continue_shopping.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_delete.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_edit_account.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_in_cart.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_login.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_notifications.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_quick_find.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_remove_notifications.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_reviews.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_search.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_shipping_options.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_tell_a_friend.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_update.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_update_cart.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/button_write_review.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/small_delete.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/small_edit.gif
    http://www.domainname.com/osc/includes/languages/english/images/buttons/small_view.gif
    类似的,zen cart模板的按钮有
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_add_address.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_back.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_buy_now.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_change_address.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_checkout.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_confirm_order.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_continue.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_continue_shopping.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_delete.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_download.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_in_cart.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_login.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_next.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_ppcheckout.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_prev.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_redeem.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_return_to_product_list.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_reviews.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_search.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_send.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_shipping_estimator.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_sold_out.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_sold_out_sm.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_submit.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_TellAFriend.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_tell_a_friend.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_unsubscribe.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_update.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_update_cart.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/button_write_review.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/small_delete.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/small_edit.gif
    http://www.domainname.com/zencart/includes/languages/english/images/buttons/small_view.gif
    上面的列表中,自己替换www.domainname.com/osc 或者 www.domainname.com/zencart 为你需要复制的网站地址。
    6. 获取网站模板的CSS文件。osc的stylesheet.css文件在根目录下。stylesheet.css文件的具体路径在查看页面源代码时能看到。
    打开获得的stylesheet.css文件,剪贴到/includes/templates/mytemplate/css/stylesheet.css文件中,追加在原来的css文件后,不要覆盖原有的内容。
    7. 打开需要复制的zen cart或者osc网站,查看源代码。(有些网站不允许你查看源代码,要一些技巧,这里就不详细讨论这个问题了)
    8. 在源代码中复制
    <!– header //–> 到 <!– header_eof //–> 之间的内容作为/includes/templates/mytemplate/common/tpl_header.php,删除该文件内原来的内容。
    <!– footer //–> 到 <!– footer_eof //–> 之间的内容作为/includes/templates/mytemplate/common/tpl_footer.php,删除该文件内原来的内容。
    (有些模板把边框部分的显示也放到header.php中,那么你需要找出属于边框的部分并删除)
    9. 现在,整个网站的外观已经基本出来了。需要替换上面的这两个文件内的链接,这里是模板转换的关键。根据下面的模式替换,第一行是需要替换的类似链接,第二行是正确的代码:
    http://www.domainname.com/osc/index.php
    <?php echo zen_href_link(FILENAME_DEFAULT); ?>
    http://www.domainname.com/osc/account.php
    <?php echo zen_href_link(FILENAME_ACCOUNT, ”, ‘SSL’); ?>
    http://www.domainname.com/osc/shopping_cart.php
    <?php echo zen_href_link(FILENAME_SHOPPING_CART, ”, ‘NONSSL’); ?>
    http://www.domainname.com/osc/checkout_shipping.php
    <?php echo zen_href_link(FILENAME_CHECKOUT_SHIPPING, ”, ‘SSL’); ?>
    http://www.domainname.com/osc/shipping.php
    <?php [...]

    展开全文
  • zencart复制其他人模板的方法整理

    千次阅读 2010-06-14 19:47:00
    这里以zencart ...复制/includes /templates/template_default下的所有目录和文件到新的目录中 2. 用文本编辑器修改/includes/templates/mytemplate/template_info.php,修改其中的名称、版本、作者等

    这里以zencart 或者osc的模板为例,其他的模板也是同样的方法。
    1. 首先在你的模板目录下,建立一个新的模板,例如:/includes/templates/mytemplate/
    复制/includes /templates/template_default下的所有目录和文件到新的目录中
    2. 用文本编辑器修改/includes/templates/mytemplate/template_info.php,修改其中的名称、版本、作者等内 容。
    3. 在后台打开新的模板,然后再工具-外观控制中,点击重置
    4. 获取网站模板的图片
    用整站下载软件实现,例如 Teleport Pro,下载全站的所有图形文件,要保留原站的文件结构。
    图片通常都在/images目录下,将下载到的/images下的图 形文件都复制到zen cart的/images目录下。
    5. 获取网站模板的按钮
    也可以用Teleport Pro下载所有按钮,通常是英文的,osc的按钮图片在/includes/languages/english/images/buttons目录下。
    将 下载的按钮保存到zen cart的按钮目录/includes/templates/mytemplate/buttons/english/ 和 /includes/templates/mytemplate/buttons/schinese/ 中,在schinese目录中的按钮,可以自己用图像处理软件转换成中文。

    6. 获取网站模板的CSS文件。osc的stylesheet.css文件在根目录下。stylesheet.css文件的具体路径在查看页面源代码时能看 到。
    打开获得的stylesheet.css文件,剪贴到/includes/templates/mytemplate/css /stylesheet.css文件中,追加在原来的css文件后,不要覆盖原有的内容。
    7. 打开需要复制的zen cart或者osc网站,查看源代码。(有些网站不允许你查看源代码,要一些技巧,这里就不详细讨论这个问题了)
    8. 在源代码中复制
    <!-- header //--> 到 <!-- header_eof //--> 之间的内容作为/includes/templates/mytemplate/common/tpl_header.php,删除该文件内原来的内容。
    <!-- footer //--> 到 <!-- footer_eof //--> 之间的内容作为/includes/templates/mytemplate/common/tpl_footer.php,删除该文件内原来的内容。
    (有 些模板把边框部分的显示也放到header.php中,那么你需要找出属于边框的部分并删除)
    9. 现在,整个网站的外观已经基本出来了。需要替换上面的这两个文件内的链接,这里是模板转换的关键。根据下面的模式替换,第一行是需要替换的类似链接,第二 行是正确的代码:

    还有一些必须的代码包括,
    用户登录、登出的代码:

    <a href="/<?php echo zen_href_link(FILENAME_LOGOFF, '', 'SSL'); ?>"></a>&amp;nbsp;&#124;&amp;nbsp;
    <a href="/<?php echo zen_href_link(FILENAME_ACCOUNT, '', 'SSL'); ?>">
    } else {
    if (STORE_STATUS == '0') {
    ?>
    <a href="/<?php echo zen_href_link(FILENAME_LOGIN, '', 'SSL'); ?>"><?php echo HEADER_TITLE_LOGIN; ?></a>
    <?php } } ?>
    货币选择方框的代码:
    <?php
    if (isset($currencies) && is_object($currencies)) {

    reset($currencies->currencies);
    $currencies_array = array();
    while (list($key, $value) = each($currencies->currencies)) {
    $currencies_array[] = array('id' => $key, 'text' => $value['title']);
    }
    $hidden_get_variables = '';
    reset($_GET);
    while (list($key, $value) = each($_GET)) {
    if ( ($key != 'currency') && ($key != zen_session_name()) && ($key != 'x') && ($key != 'y') ) {
    $hidden_get_variables .= zen_draw_hidden_field($key, $value);
    }
    }
    }
    $content = zen_draw_form('currencies', zen_href_link(basename(ereg_replace('.php','', $PHP_SELF)), '', $request_type, false), 'get');
    $content .= zen_draw_pull_down_menu('currency', $currencies_array, $_SESSION['currency'], 'on

    change="this.form.submit();" style="width: 100%"') . $hidden_get_variables . zen_hide_session_id();
    $content .= '</form>';
    echo $content;
    ?>
    语言选择的代码:
    <?php
    if (!isset($lng) &#124;&#124; (isset($lng) && !is_object($lng))) {
    $lng = new language;
    }
    $lng_cnt = 0;
    while (list($key, $value) = each($lng->catalog_languages)) {
    $content .= '<a href="' . zen_href_link($_GET['main_page'], zen_get_all_get_params(array('language', 'currency')) . 'language=' . $key, $request_type) . '">' . zen_image(DIR_WS_LANGUAGES . $value['directory'] . '/images/' . $value['image'], $value['name']) . '</a>&amp;nbsp;&amp;nbsp;';
    $lng_cnt ++;
    if ($lng_cnt >= MAX_LANGUAGE_FLAGS_COLUMNS) {
    $lng_cnt = 0;
    $content .= '<br />';
    }
    }
    echo $content;
    ?>
    经过以上的替 换,tpl_header.php和tpl_footer.php中所有的外部链接都应该替换为你自己的链接了。
    如果还有类似 http://www.domainname.com/osc/index.php?cPath=37_28 的链接,这是单个商品的链接,可以删除,或改成你自己的商品链接。
    10. 下一步,将tpl_header.php和tpl_footer.php这两个文件中的文字,替换为PHP代码,以支持多语言。如果你只用单一语言,直接 修改为你需要的文字即可。例如,
    类似 “创建帐号” 改为 <?php echo HEADER_TITLE_CREATE_ACCOUNT; ?>
    类似 “商品分类” 改为 <?php echo HEADER_TITLE_CATALOG; ?>
    类似 “登出” 改为 <?php echo HEADER_TITLE_LOGOFF; ?>
    类似 “我的帐号” 改为 <?php echo HEADER_TITLE_MY_ACCOUNT; ?>
    类似 “登录” 改为 <?php echo HEADER_TITLE_LOGIN; ?>
    类似 “购物车中的货品” 改为 <?php echo HEADER_TITLE_CART_CONTENTS; ?>
    类似 “结帐” 改为 <?php echo HEADER_TITLE_CHECKOUT; ?>
    类似“搜索”改为 <?php echo BOX_HEADING_SEARCH; ?>
    类似“高级搜索”改为 <?php echo BOX_SEARCH_ADVANCED_SEARCH; ?>
    类似 “特价商品” 改为 <?php echo CATEGORIES_BOX_HEADING_SPECIALS; ?>
    类似 “新进商品” 改为 <?php echo CATEGORIES_BOX_HEADING_WHATS_NEW; ?>
    类似 “推荐商品” 改为 <?php echo CATEGORIES_BOX_HEADING_FEATURED_PRODUCTS; ?>
    类似 “所有商品” 改为 <?php echo CATEGORIES_BOX_HEADING_PRODUCTS_ALL; ?>
    类似 “联系我们” 改为 <?php echo BOX_INFORMATION_CONTACT; ?>
    类似 “货币” 改为 <?php echo BOX_HEADING_CURRENCIES; ?>
    类似 “语言” 改为 <?php echo BOX_HEADING_LANGUAGES; ?>
    还有一些可能用到的代码:
    引文:
    <?php echo TEXT_YOUR_IP_ADDRESS . ' ' . $_SERVER['REMOTE_ADDR']; ?>
    <?php echo FOOTER_TEXT_BODY; ?>
    <div>Parse Time: <?php echo $parse_time; ?> - Number of Queries: <?php echo $db->queryCount(); ?> - Query Time: <?php echo $db->queryTime(); ?></div>
    经过以上的十步操作,基本形成了网站的外观,下面要调整边框的模 板了。待续。
    -------------------------------------------------------------------------------
    补 充:sideboxes里的模块随意插入到网页任意位置方法
    参考search_header.php的做法:

    require($template->get_template_dir($column_box_default, DIR_WS_TEMPLATE, $current_page_base,'common') . '/' . $column_box_default);
    改为
    require($template->get_template_dir ('tpl_box_你自定义的文件名.php',DIR_WS_TEMPLATE, $current_page_base,'common'). '/tpl_box_你自定义的文件名.php');
    在common目录下建立此文件名:tpl_box_你自定义的文件名.php
    内 容:<?php echo $content; ?>
    插入模块时参考写法:<?php require(DIR_WS_MODULES . 'sideboxes/' . 'search_header.php'); ?>
    展开全文
  • C# 使用Excel模板复制单元格

    千次阅读 2012-03-27 11:13:01
    string saveFileName = ""; SaveFileDialog saveDialog = new SaveFileDialog(); saveDialog.DefaultExt = ...templateRange是源区域,targetRange是目标区域,调用源区域的Copy方法将内容整个复制到目标区域。
  • 如果您下载的是整个网站的模板就直接从根目录覆盖对应文件夹。如果舍不得覆盖掉怕破坏原本的默认模板那就先将官方模板备份。 再具体点,一般下载下来的东西解压后是这样的: V9 模板使用 模板安装 模板...
  • ACM模板(满注释模板!)

    万次阅读 多人点赞 2020-04-13 22:00:52
    ACM模板,不同于其他大佬的是我这个模板是满注释的!哪怕是小白的你考场上都能快速上手算法,每一句都有注释帮你快速理解,方便对模板根据题意的修改
  • Django-模板模板语言)

    千次阅读 2017-03-10 15:54:04
    最常见的做法是使用模板模板包含所需HTML 输出的静态部分,以及一些特殊的语法,描述如何将动态内容插入。 Django 项目可以配置一个或多个模板引擎(甚至是零,如果你不需要使用模板)。Django 的模板系统自带内...
  • Cacti定义了三种类型的模板,分别是 主机模板 数据模板 图形模板  主机模板(Host templates),它是图像模板和数据查询的一个集合,描述了监控某一类型的机器需要生成那些图像。  数据模板(Data ...
  • gauss模板

    千次阅读 2017-06-29 10:05:43
    原文地址:gauss模板作者:changwanghao摘 要 在图像预处理中,对图像进行平滑,去除噪声,恢复原始图像是一个重要内容。本文设计了一个平滑尺度和模板大小均可以改变的高斯滤波器,用它对多幅加入各种噪声后的图像...
  • #include #include using namespace std; using std::vector; int main(int argc, char const *argv[]) { int a[20];//define a integer array has 20 elements; cout [20] is as follow
  • 函数模板

    千次阅读 2012-07-17 09:01:15
    模板从大体上,可以分为两种:函数模板和类模板。函数模板是算法库的基础,类模板是建立标准库容器和迭代器的基础。这一小节我们只介绍函数模板。 个人觉得,模板是C++对C的一个非常有力的扩充,即使我们不使用面向...
  • 学习C++模板---模板类作为基类 使用模板类作为基类使用。 // 模板类-晋升.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <process.h> #include <...
  • ecshop模板smarty foreach详解

    万次阅读 2012-05-22 12:07:19
    Smarty目录:/libs Smarty的功能类目录/tempalates 模板文件目录/templates_c 模板缓存文件目录/configs 配置文件目录/cache 缓存文件目录载入Smarty功能类:require(’路径/Smarty.class.php’);$smarty = new ...
  • gauss模板计算

    千次阅读 2013-11-05 19:36:20
    gauss模板 在图像预处理中,对图像进行平滑,去除噪声,恢复原始图像是一个重要内容。本文设计了一个平滑尺度和模板大小均可以改变的高斯滤波器,用它对多幅加入各种噪声后的图像进行平滑,经过对各个结果图像的...
  • Eclipse 模板使用

    千次阅读 2018-10-02 15:43:33
    java editor template Eclipse中的快速Java代码模板使用 &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 相信大家都用过Eclipse的缩写代码提示功能,如...
  • 3、将模版中的HTML代码整个复制到对应的jsp中 4、将basepath在移动到head标签中 前端代码插件的添加 因为my eclipse不是专业的前端编辑工具,如HBuilder、WebStorm等,所以想实现辅助输入功能,需...
  • 创建TPL自定义模板

    千次阅读 2017-03-30 14:41:35
    创建初始模板所需要的文件和文件夹    1.index.php主文件,用于编写业务逻辑  2.template.inc.php模板初始化文件,用于初始化模板信息  3.templates目录用于存放所有的模板文件  1)index.tpl模板文件  4....
  • C++可变参数模板

    千次阅读 2017-04-04 16:22:32
    可变参数模板普通模板只可以采取固定数量的模板参数。然而,有时候我们希望模板可以接收任意数量的模板参数,这个时候可以采用可变参数模板。对于可变参数模板,其将包含至少一个模板参数包,模板参数包是可以接收0...
  • Django模板语言

    千次阅读 2016-08-30 16:15:34
    模板系统基础 Django模板是一个string文本,它用来分离一个文档的展现和数据 模板定义了placeholder和表示多种逻辑的tags来规定文档如何展现 通常模板用来输出HTML,但是Django模板也能生成其它基于文本的形式 ...
  • 杰奇模板详解

    千次阅读 2016-05-31 23:42:22
    modules/article/templates // 文章系统模板 modules/article/templates/blocks // 文章系统区块模板 modules/forum/templates // 论坛系统模板 modules/forum/templates/blocks // 论坛系统区块模板 templates // ...
  • LaTeX通用简洁模板

    万次阅读 多人点赞 2017-04-04 10:55:43
    LaTeX通用简洁模板(用于CTeX套装下的自带WinEdt编辑器)之前写过一个LaTeX的中文模板,此次做了一些修改,主要是: 有同学反应,之前一个模板显得比较乱。虽然将正文部分注释掉了,源码显得还是太乱而不够简明,故...
  • 模板

    千次阅读 2012-07-18 22:29:46
    这一小节专门介绍类模板,先看一个简单的例子: template class Test { public: Test(Type val):value(val){} void set(const Type &val){value = val;} Type get(){return value;} private: Type value; };...
  • Java 模板引擎总结

    万次阅读 2016-03-30 18:54:27
    Java模板引擎 FreeMarker 概念 介绍 特性 优势 不足 一个小Demo 概念 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写。它是为Java程序员提供的一个开发包。它不是面向最终...
  • cocos2d-x创建新项目模板

    千次阅读 2013-07-31 21:41:08
    长期使用项目中自带的HelloWorldScene来创建模板工程,不知大家有木有感到厌烦? 我是个懒人,所以就弄了个新的模板工程。这样最起码可以不用每次都把HelloWorldScene删掉再创建一个Scene了,另外因为通常都会用...
  • Thymeleaf模板的使用

    万次阅读 2015-03-28 14:08:46
    使用模板的要点:  页面主体结构固定,具体参数可变,尽可能让参数动态化,才能提高模板的复用性 =================================================================== Thymeleaf's core is a DOM processing ...
  • C++模板与标准模板库(STL库)介绍

    千次阅读 2017-02-26 17:12:47
    1. 概论  C++ 语言的核心优势之一就是便于软件...的思想:模板机制,以及标准模板库机制,以及标准模板库 STL泛型程序设计  泛型程序设计,简单地说就是使用模板的程序设计法。  将一些常用的数据结构(比如链表
  • 1、直接复制你想创建的文件样式(这里以新建spring的applicationContext.xml配置文件为例演示,文章下面附有该模板的源码); 2、打开IDEA创建的模板的界面; 3、粘贴模板样式到新建的模板中,并选择模板的类型...
  • 几十个网站后台模板css+div模板收集

    万次阅读 2013-12-12 19:38:24
    请下载附件中的源码,不要直接复制 (已下载 31730 次) 点击下载源码文件: admin-templates.rar 办公自动化系统OA简单后台模板,深蓝色风格,带登录页面及后台操作页面,操作页以选项卡形式打开,操作
  • 软件开发文档模板

    万次阅读 多人点赞 2018-08-13 15:55:49
    中提供了文档的编写模板供开发者参考,在进行具体软件开发时,开发者可根据实际情况采编写,但必须提供双方约定的文档,文档中约定的内容必须描述清楚。 2.  总体要求 2.1  总体功能要求 网络应用环境以 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 88,203
精华内容 35,281
关键字:

怎么复制整个模板