普通报表模板

package api;

import java.awt.Color;
import java.util.ArrayList;

import com.fr.base.Formula;
import com.fr.base.IconManager;
import com.fr.base.Margin;
import com.fr.base.PaperSize;
import com.fr.base.Parameter;
import com.fr.base.background.ColorBackground;
import com.fr.base.background.TextureBackground;
import com.fr.base.headerfooter.DateHFElement;
import com.fr.base.headerfooter.FormulaHFElement;
import com.fr.base.headerfooter.HFElement;
import com.fr.base.headerfooter.ImageHFElement;
import com.fr.base.headerfooter.NewLineHFElement;
import com.fr.base.headerfooter.NumberOfPageHFElement;
import com.fr.base.headerfooter.PageNumberHFElement;
import com.fr.base.headerfooter.TextHFElement;
import com.fr.base.headerfooter.TimeHFElement;
import com.fr.base.iofile.attr.WatermarkAttr;
import com.fr.base.mobile.MobileFitAttrState;
import com.fr.base.print.NativePrintAttr;
import com.fr.base.print.NativePrintAttr.PageType;
import com.fr.base.print.NoClientPrintAttr;
import com.fr.base.print.PrintSettingsAttrMark;
import com.fr.data.ClassSubmitJob;
import com.fr.data.ClassVerifyJob;
import com.fr.data.VerifyItem;
import com.fr.data.core.db.dml.Table;
import com.fr.form.ui.CustomToolBarButton;
import com.fr.form.ui.TextArea;
import com.fr.form.ui.ToolBar;
import com.fr.form.ui.WebContentUtils;
import com.fr.general.FRFont;
import com.fr.io.TemplateWorkBookIO;
import com.fr.io.attr.ExcelExportAttr;
import com.fr.io.attr.PDFExportAttr;
import com.fr.io.attr.ReportExportAttr;
import com.fr.io.attr.WordExportAttr;
import com.fr.js.CustomActionJavaScript;
import com.fr.js.EmailJavaScript;
import com.fr.js.JavaScriptImpl;
import com.fr.main.impl.WorkBook;
import com.fr.main.parameter.ReportParameterAttr;
import com.fr.page.stable.PaperSetting;
import com.fr.page.stable.ReportPageAttr;
import com.fr.privilege.finegrain.CellPrivilegeControl;
import com.fr.privilege.finegrain.WidgetPrivilegeControl;
import com.fr.privilege.finegrain.WorkSheetPrivilegeControl;
import com.fr.report.cell.DefaultTemplateCellElement;
import com.fr.report.core.ReportHF;
import com.fr.report.fit.FitAttrState;
import com.fr.report.fit.ReportFitAttr;
import com.fr.report.mobile.ElementCaseMobileAttr;
import com.fr.report.stable.LayerReportAttr;
import com.fr.report.stable.ReportConstants;
import com.fr.report.stable.ReportSettings;
import com.fr.report.stable.WorkSheetAttr;
import com.fr.report.web.Location;
import com.fr.report.web.Printer;
import com.fr.report.web.ToolBarManager;
import com.fr.report.web.WebContent;
import com.fr.report.web.WebPage;
import com.fr.report.web.WebView;
import com.fr.report.web.WebWrite;
import com.fr.report.web.button.Email;
import com.fr.report.web.button.ExcelO;
import com.fr.report.web.button.ExcelP;
import com.fr.report.web.button.ExcelS;
import com.fr.report.web.button.Export;
import com.fr.report.web.button.PDF;
import com.fr.report.web.button.PageSetup;
import com.fr.report.web.button.Print;
import com.fr.report.web.button.PrintPreview;
import com.fr.report.web.button.Scale;
import com.fr.report.web.button.Word;
import com.fr.report.web.button.form.DefaultListener;
import com.fr.report.web.button.page.First;
import com.fr.report.web.button.page.Last;
import com.fr.report.web.button.page.Next;
import com.fr.report.web.button.page.PageNavi;
import com.fr.report.web.button.page.Previous;
import com.fr.report.web.button.write.AppendColumnRow;
import com.fr.report.web.button.write.ClearStashedButton;
import com.fr.report.web.button.write.CustomizeImportExcelData;
import com.fr.report.web.button.write.DeleteColumnRow;
import com.fr.report.web.button.write.ExcelImport;
import com.fr.report.web.button.write.ImExcelAppend;
import com.fr.report.web.button.write.ImExcelClean;
import com.fr.report.web.button.write.ImExcelCover;
import com.fr.report.web.button.write.ImportExcelData;
import com.fr.report.web.button.write.ShowCellValue;
import com.fr.report.web.button.write.StashButton;
import com.fr.report.web.button.write.Submit;
import com.fr.report.web.button.write.Verify;
import com.fr.report.worksheet.WorkSheet;
import com.fr.report.write.BuiltInSQLSubmiter;
import com.fr.report.write.ReportWriteAttr;
import com.fr.report.write.ValueVerifier;
import com.fr.report.write.WClassSubmiter;
import com.fr.report.write.WClassVerifier;
import com.fr.stable.ColumnRow;
import com.fr.stable.Constants;
import com.fr.stable.ListMap;
import com.fr.stable.unit.MM;
import com.fr.third.com.lowagie.text.Font;
import com.fr.web.attr.ReportWebAttr;
import com.fr.write.config.ColumnConfig;
import com.fr.write.config.IntelliDMLConfig;

/**
 * 普通报表模板
 * 
 * @author Administrator
 */
public class CommonReportlet {

	public static void main(String[] args) {
		try {
			ServerConnector.remote();
			
			WorkBook workbook = new WorkBook();

			workbook.setPreviewType(WorkBook.DEFAULT_PREVIEW_TYPE);

			WorkSheet sheet = new WorkSheet();

			web(workbook);
			exportSetting(workbook);
			templateParameter(workbook);
			fitAttribute(workbook);
			mobileAttribute(workbook);
			printAttribute(workbook);
			watermark(workbook);
			paperSetting(sheet);
			header(sheet);
			footer(sheet);
			background(sheet);
			reportWrite(sheet);
			sheetAttr(sheet);
			layer(sheet);
			repeatFreeze(sheet);
			privilege(workbook, sheet);

			workbook.addReport("sheet", sheet);

			TemplateWorkBookIO.writeTemplateWorkBook(workbook, "模板设置.cpt");
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		ServerConnector.disconnect();
	}

	/**
	 * 模板WEB属性
	 * 
	 * @param workbook
	 */
	private static void web(WorkBook workbook) {
		ReportWebAttr web = new ReportWebAttr();
		/*
		 * 基本
		 */
		// 标题
		web.setTitle("=now()");
		// 报表缓存有效时间
		web.setCacheValidateTime(3);

		/*
		 * 打印机(服务器)
		 */
		Printer p = new Printer();
		p.setPrinters(new String[] { "Microsoft XPS Document Writer" });
		web.setPrinter(p);

		/*
		 * 分页预览设置
		 */
		WebPage page = new WebPage();
		// 报表显示位置
		page.setViewAtCenter(true);
		// 页面
		page.setShowAsImage(false);
		page.setAutoScaleWhenEmbeddedInIframe(false);
		page.setTDHeavy(false);
		// 顶部工具栏
		ToolBarManager topToolbar = ToolBarManager.createDefaultToolBar();
		topToolbar.setToolBarLocation(Location.createTopEmbedLocation());
		ToolBar toolbar = topToolbar.getToolBar();
		toolbar.clearWidgets();
		// 首页
		toolbar.addWidget(new First());
		// 上一页
		toolbar.addWidget(new Previous());
		// 当前页/总页数
		toolbar.addWidget(new PageNavi());
		// 下一页
		toolbar.addWidget(new Next());
		// 末页
		toolbar.addWidget(new Last());
		// 缩放
		toolbar.addWidget(new Scale());
		// 邮件
		Email email = new Email();
		email.setCustomConsignee(false);
		email.setConsigneeByDepartment(true);
		email.setConsigneeByRole(true);
		toolbar.addWidget(email);
		// 导出
		Export export = new Export();
		export.setPdfAvailable(false);
		export.setExcelPAvailable(true);
		export.setExcelOAvailable(false);
		export.setExcelSAvailable(true);
		export.setWordAvailable(false);
		export.setImageAvailable(false);
		toolbar.addWidget(export);
		// PDF
		toolbar.addWidget(new PDF());
		// Excel(分页导出)
		toolbar.addWidget(new ExcelP());
		// Excel(原样导出)
		toolbar.addWidget(new ExcelO());
		// 分页分Sheet导出
		toolbar.addWidget(new ExcelS());
		// Word格式
		toolbar.addWidget(new Word());
		// 打印
		toolbar.addWidget(new Print());
		// 自定义按钮
		CustomToolBarButton b = new CustomToolBarButton("custom_button", IconManager.EDIT.getName());
		b.setShowIcon(true);
		b.setShowText(true);
		b.setText("自定义按钮");
		b.setIconName(IconManager.EDIT.getName());
		// JavaScript脚本
		JavaScriptImpl j = new JavaScriptImpl("alert(ddd);");
		j.setParameters(new Parameter[] { new Parameter("ddd", new Formula("now()")) });
		j.addJSImort("scripts/js/my.js");
		b.setJSImpl(j);
		toolbar.addWidget(b);
		// 底部工具栏
		ToolBarManager bottomToolbar = ToolBarManager.createDefaultToolBar();
		bottomToolbar.setToolBarLocation(Location.createBottomEmbedLocation());
		bottomToolbar.setToolBar(toolbar);
		page.setToolBarManagers(new ToolBarManager[] { topToolbar, bottomToolbar });
		// 事件设置 WebContentUtils/WebContent/WebWrite
		DefaultListener l = new DefaultListener(WebContentUtils.EVENT_AFTERLOAD, j);
		// 背景设置
		toolbar.setDefault(false);
		toolbar.setBackground(ColorBackground.getInstance(Color.GREEN));
		page.addListener(l);
		web.setWebPage(page);

		/*
		 * 填报页面设置
		 */
		WebWrite write = new WebWrite();
		// sheet标签页显示位置
		write.setSheetPosition(Constants.TOP);
		// 报表显示位置
		write.setViewAtLeft(false);
		// 填报当前行背景
		write.setEditRowColor(true);
		write.setSelectedColor(Color.red);
		// 未提交离开提示
		write.setUnloadCheck(false);
		// 直接显示控件
		write.setShowWidgets(true);
		// 自动暂存
		write.setAutoStash(true);
		// 顶部工具栏
		topToolbar = ToolBarManager.createDefaultWriteToolBar();
		topToolbar.setToolBarLocation(Location.createTopEmbedLocation());
		toolbar = new ToolBar();
		// 提交
		Submit submit = new Submit();
		submit.setVerify(true);
		submit.setFailVerifySubmit(true);
		submit.setOnlySubmitSelect(true);
		toolbar.addWidget(submit);
		// 数据校验
		toolbar.addWidget(new Verify());
		// 导入[Excel]
		toolbar.addWidget(new ImportExcelData());
		// 显示单元格值
		toolbar.addWidget(new ShowCellValue());
		// 插入记录
		AppendColumnRow append = new AppendColumnRow();
		append.setCount(2);
		toolbar.addWidget(append);
		// 删除记录
		toolbar.addWidget(new DeleteColumnRow());
		// 暂存
		toolbar.addWidget(new StashButton());
		// 清空
		toolbar.addWidget(new ClearStashedButton());
		// 自定义导入Excel行列
		toolbar.addWidget(new CustomizeImportExcelData());
		// 多次导入[Excel]
		toolbar.addWidget(new ExcelImport());
		// 覆盖导入
		toolbar.addWidget(new ImExcelCover());
		// 清空导入
		toolbar.addWidget(new ImExcelClean());
		// 增量导入
		toolbar.addWidget(new ImExcelAppend());
		toolbar.setDefault(true);
		topToolbar.setToolBar(toolbar);
		// 底部工具栏
		bottomToolbar = ToolBarManager.createDefaultToolBar();
		bottomToolbar.setToolBarLocation(Location.createBottomEmbedLocation());
		bottomToolbar.setToolBar(toolbar);
		write.setToolBarManagers(new ToolBarManager[] { topToolbar, bottomToolbar });
		// 事件设置 WebContentUtils/WebContent/WebWrite
		EmailJavaScript e = new EmailJavaScript();
		e.setMailTo("");
		e.setTitle("title");
		e.setMainText("text");
		l = new DefaultListener(WebContentUtils.EVENT_AFTERLOAD, e);
		write.addListener(l);
		web.setWebWrite(write);

		/*
		 * 数据分析
		 */
		WebView view = new WebView();
		// 数据分析
		view.setSortFuncCheck(true);
		view.setConditionFuncCheck(true);
		view.setListFuncCheck(true);
		// 工具栏
		topToolbar = ToolBarManager.createDefaultViewToolBar();
		topToolbar.setToolBarLocation(Location.createTopEmbedLocation());
		toolbar = new ToolBar();
		// 打印预览
		toolbar.addWidget(new PrintPreview());
		// 页面设置 WebContentUtils/WebContent/WebWrite
		toolbar.addWidget(new PageSetup());
		toolbar.addListener(new DefaultListener(WebContent.EVENT_AFTER_APPLET_PRINT,
				new CustomActionJavaScript(new ClassSubmitJob("custom.MySubmitJob"))));
		web.setWebView(view);

		/*
		 * 浏览器背景
		 */
		web.setBackground(new TextureBackground(TextureBackground.FISH_FOSSIL_TEXTURE_PAINT));

		/*
		 * 引用CSS
		 */
		web.addCSSImport("css/my.css");

		/*
		 * 引用JavaScript
		 */
		web.addJSImport("js/my.js");

		workbook.setReportWebAttr(web);
	}

	/**
	 * 模板导出设置
	 * 
	 * @param workbook
	 */
	private static void exportSetting(WorkBook workbook) {
		ReportExportAttr attr = new ReportExportAttr();
		/*
		 * Excel
		 */
		ExcelExportAttr excelAttr = new ExcelExportAttr();
		// 导出隐藏行
		excelAttr.setExportHidedRow(true);
		// 导出隐藏列
		excelAttr.setExportHidedColumn(true);
		// 需要密码
		excelAttr.setPassword("excel_file_password");
		// 保护密码
		excelAttr.setProtectedWord("excel_protected_password");
		attr.setExcelExportAttr(excelAttr);

		/*
		 * PDF
		 */
		PDFExportAttr pdf = new PDFExportAttr();
		// 需要密码
		pdf.setPassword("pdf_file_password");
		attr.setPDFExportAttr(pdf);

		/*
		 * Word
		 */
		WordExportAttr word = new WordExportAttr();
		// 不固定行高导出
		word.setExportAsTable(true);
		attr.setWordExportAttr(word);

		workbook.setReportExportAttr(attr);
	}

	/**
	 * 模板参数
	 * 
	 * @param workbook
	 */
	private static void templateParameter(WorkBook workbook) {
		ReportParameterAttr attr = new ReportParameterAttr();
		attr.addParameter(new Parameter("p1", "123"));
		workbook.setReportParameterAttr(attr);
	}

	/**
	 * PC端自适应属性
	 */
	private static void fitAttribute(WorkBook workbook) {
		ReportFitAttr attr = new ReportFitAttr();
		attr.setFitFont(true);
		attr.setFitStateInPC(FitAttrState.HORIZONTAL_FIT.getState());
		workbook.setReportFitAttr(attr);
	}

	/**
	 * 移动端属性
	 * 
	 * @param workbook
	 */
	private static void mobileAttribute(WorkBook workbook) {
		ElementCaseMobileAttr attr = new ElementCaseMobileAttr();
		// 模板设置
		attr.setMobileCanvasSize(true);
		// 自适应
		attr.setHorziontalAttr(MobileFitAttrState.HORIZONTAL);
		attr.setVerticalAttr(MobileFitAttrState.BIDIRECTIONAL);
		// 其他
		attr.setAppearRefresh(true);
		attr.setAllowDoubleClickOrZoom(false);
		workbook.setReportMobileAttr(attr);
	}

	/**
	 * 打印属性
	 * 
	 * @param workbook
	 */
	private static void printAttribute(WorkBook workbook) {
		PrintSettingsAttrMark print = new PrintSettingsAttrMark();
		print.setValid(true);
		/*
		 * 零客户端打印
		 */
		print.setPrintType(PrintSettingsAttrMark.NO_CLIENT_PRINT);
		NoClientPrintAttr ncp = print.getNoClientPrintAttr();
		// 打印时可设置打印边距
		ncp.setSetMarginOnPrint(true);
		// IE浏览器中不显示打印设置
		ncp.setIeQuietPrint(true);
		// 针式打印优化
		ncp.setNeedlePrinterOptimize(true);
		// 继承页面边距设置
		ncp.setInheritPageMarginSetting(false);
		ncp.setMargin(new Margin(new MM(5), new MM(5), new MM(5), new MM(5)));

		/*
		 * 本地软件打印
		 */
		print.setPrintType(PrintSettingsAttrMark.NATIVE_PRINT);
		NativePrintAttr np = print.getNativePrintAttr();
		// 打印时需要打印设置窗口
		np.setShowDialog(true);
		// 打印需要设置指定sheet
		np.setNeedSelectSheet(true);
		// 打印机
		np.setPrinterName("printer_name");
		// 份数
		np.setCopy(2);
		// 页码
		np.setPageType(PageType.ALL_PAGES);
		np.setPageType(PageType.CURRENT_PAGE);
		np.setPageType(PageType.SPECIFIED_PAGES);
		np.setArea("1-3");
		np.setPageType(PageType.ODD_PAGES);
		np.setPageType(PageType.EVEN_PAGES);
		// 纸张
		np.setInheritPagePaperSetting(false);
		np.setPaperSize(PaperSize.PAPERSIZE_A4);
		np.setPaperSize(new PaperSize(new MM(100), new MM(150)));
		// 布局
		np.setInheritPageLayoutSetting(false);
		np.setOrientation(ReportConstants.LANDSCAPE);
		// 边距
		np.setInheritPageMarginSetting(false);
		np.setMargin(new Margin(new MM(6), new MM(6), new MM(6), new MM(6)));
		// 缩放
		np.setFitPaperSize(false);
		np.setScalePercent(95);

		workbook.addAttrMark(print);
	}

	/**
	 * 水印
	 * 
	 * @param workbook
	 */
	private static void watermark(WorkBook workbook) {
		WatermarkAttr attr = new WatermarkAttr();
		// 文字
		attr.setText("watermark");
		// 字号
		attr.setFontSize(25);
		// 水印间距
		attr.setHorizontalGap(200);
		attr.setVerticalGap(100);
		// 文字颜色
		attr.setColor(Color.RED);
		workbook.addAttrMark(attr);
	}

	/**
	 * 页面设置
	 * 
	 * @param sheet
	 */
	private static void paperSetting(WorkSheet sheet) {
		ReportSettings rs = new ReportSettings();
		PaperSetting attr = new PaperSetting();
		/*
		 * 页面
		 */
		// 方向
		attr.setOrientation(ReportConstants.PORTRAIT);
		// 页边距
		attr.setMargin(new Margin(new MM(7), new MM(7), new MM(7), new MM(7)));
		// 纸张大小
		attr.setPaperSize(PaperSize.PAPERSIZE_A5.rotate());
		rs.setPaperSetting(attr);
		// 高度
		rs.setHeaderHeight(new MM(10));
		rs.setFooterHeight(new MM(10));

		/*
		 * 其他
		 */
		// 分页顺序
		rs.setPageOrder(Constants.LEFT_TO_RIGHT);
		// 居中方式
		rs.setHorizontalCenterOnPage(true);
		rs.setVerticalCenterOnPage(true);
		// 起始页码
		rs.setFirstPageNumber(3);
		// 根据单元格内容自定调整
		rs.setShrinkToFitMode(ReportConstants.AUTO_SHRINK_TO_FIT_HEIGHT);

		sheet.setReportSettings(rs);
	}

	/**
	 * 编辑页眉
	 * 
	 * @param sheet
	 */
	private static void header(WorkSheet sheet) {
		ReportHF h = new ReportHF();

		ArrayList<HFElement> list = new ArrayList<HFElement>();
		// 文本
		TextHFElement text = new TextHFElement("text", FRFont.getInstance("黑体", Font.BOLD, 14));
		// 公式
		FormulaHFElement formula = new FormulaHFElement("now()");
		// 页码
		NumberOfPageHFElement np = new NumberOfPageHFElement();
		// 总页数
		PageNumberHFElement pn = new PageNumberHFElement();
		// 日期
		DateHFElement date = new DateHFElement();
		// 时间
		TimeHFElement time = new TimeHFElement();
		// 图片
		ImageHFElement image = new ImageHFElement();
		// 换行符
		NewLineHFElement nl = new NewLineHFElement();
		list.add(text);
		list.add(formula);
		list.add(np);
		list.add(pn);
		list.add(date);
		list.add(time);
		list.add(image);
		list.add(nl);

		// 背景
		h.setBackground(ColorBackground.getInstance(Color.YELLOW));
		// 打印/导出报表背景
		h.setPrintBackground(false);
		// 高度
		sheet.getReportSettings().setHeaderHeight(new MM(10));
		// 左
		h.setLeftList(list);
		// 中
		h.setCenterList(list);
		// 右
		h.setRightList(list);

		// 默认页
		sheet.setHeader(ReportConstants.REPORTPAGE_DEFAULT, h);
		// 首页
		sheet.setHeader(ReportConstants.REPORTPAGE_FIRST, h);
		// 最后一页
		sheet.setHeader(ReportConstants.REPORTPAGE_LAST, h);
		// 奇数页
		sheet.setHeader(ReportConstants.REPORTPAGE_ODD, h);
		// 偶数页
		sheet.setHeader(ReportConstants.REPORTPAGE_EVEN, h);
	}

	/**
	 * 编辑页脚
	 * 
	 * @param sheet
	 */
	private static void footer(WorkSheet sheet) {
		ReportHF f = new ReportHF();

		ArrayList<HFElement> list = new ArrayList<HFElement>();
		// 文本
		TextHFElement text = new TextHFElement("text", FRFont.getInstance("黑体", Font.BOLD, 14));
		// 公式
		FormulaHFElement formula = new FormulaHFElement("now()");
		// 页码
		NumberOfPageHFElement np = new NumberOfPageHFElement();
		// 总页数
		PageNumberHFElement pn = new PageNumberHFElement();
		// 日期
		DateHFElement date = new DateHFElement();
		// 时间
		TimeHFElement time = new TimeHFElement();
		// 图片
		ImageHFElement image = new ImageHFElement();
		// 换行符
		NewLineHFElement nl = new NewLineHFElement();
		list.add(text);
		list.add(formula);
		list.add(np);
		list.add(pn);
		list.add(date);
		list.add(time);
		list.add(image);
		list.add(nl);

		// 背景
		f.setBackground(ColorBackground.getInstance(Color.YELLOW));
		// 打印/导出报表背景
		f.setPrintBackground(false);
		// 高度
		sheet.getReportSettings().setHeaderHeight(new MM(10));
		// 左
		f.setLeftList(list);
		// 中
		f.setCenterList(list);
		// 右
		f.setRightList(list);

		// 默认页
		sheet.setFooter(ReportConstants.REPORTPAGE_DEFAULT, f);
		// 首页
		sheet.setFooter(ReportConstants.REPORTPAGE_FIRST, f);
		// 最后一页
		sheet.setFooter(ReportConstants.REPORTPAGE_LAST, f);
		// 奇数页
		sheet.setFooter(ReportConstants.REPORTPAGE_ODD, f);
		// 偶数页
		sheet.setFooter(ReportConstants.REPORTPAGE_EVEN, f);
	}

	/**
	 * 纸张背景
	 * 
	 * @param sheet
	 */
	private static void background(WorkSheet sheet) {
		ReportSettings rs = ((ReportSettings) sheet.getReportSettings());
		// 导出报表背景
		rs.setExportBackground(true);
		// 打印报表背景
		rs.setPrintBackground(true);
		// 背景
		rs.setBackground(ColorBackground.getInstance(Color.BLUE));
	}

	/**
	 * 报表填报属性
	 * 
	 * @param sheet
	 */
	private static void reportWrite(WorkSheet sheet) {
		ReportWriteAttr attr = new ReportWriteAttr();
		/*
		 * 数据校验
		 */
		// 内置校验
		ValueVerifier vv = new ValueVerifier();
		vv.addVerifyItem(new VerifyItem(new Formula("false"), "校验提示信息"));
		vv.setName("数据校验");
		attr.addVerifier(vv);
		// 自定义校验
		WClassVerifier cv = new WClassVerifier();
		cv.setName("自定义校验");
		cv.setClassVerifyJob(new ClassVerifyJob("custom.MyVerifyJob"));
		attr.addVerifier(cv);

		/*
		 * 提交
		 */
		// 内置SQL
		BuiltInSQLSubmiter ss = new BuiltInSQLSubmiter();
		ss.setDBName("FRDemo");
		IntelliDMLConfig config = new IntelliDMLConfig();
		config.setTable(new Table("销量"));
		config.addColumnConfig(new ColumnConfig("销量", ColumnRow.valueOf("A1"), false));
		ss.setDmlConfig(config);
		attr.addSubmitVisitor("内置SQL", ss);
		// 自定义提交
		WClassSubmiter cs = new WClassSubmiter();
		ClassSubmitJob csj = new ClassSubmitJob("custom.MySubmitJob");
		ListMap<String, Object> m = new ListMap<String, Object>();
		m.put("p1", "123");
		csj.setPropertyMap(m);
		cs.setSubmitJob(csj);
		attr.addSubmitVisitor("自定义提交", cs);

		sheet.addAttributeTarget(attr);
	}

	/**
	 * 报表分栏
	 * 
	 * @param sheet
	 */
	private static void sheetAttr(WorkSheet sheet) {
		WorkSheetAttr attr = new WorkSheetAttr();

		// 分栏样式
		attr.setDirection(Constants.TOP_TO_BOTTOM);
		// 超过列分栏
		attr.setMaxCount(5);
		// 分栏成行
		attr.setCount(3);
		// 分栏数据
		attr.setStartIndex(0);
		attr.setOppoStartIndex(1);
		attr.setEndIndex(3);
		attr.setOppoEndIndex(5);
		// 复制列序号
		attr.setIndexsToCopy("1,2-3,5");
		// 补充空白列
		attr.setShowBlank(true);

		sheet.setWorkSheetAttr(attr);
	}

	/**
	 * 重复与冻结
	 * 
	 * @param sheet
	 */
	private static void repeatFreeze(WorkSheet sheet) {
		ReportPageAttr attr = new ReportPageAttr();

		/*
		 * 重复
		 */
		// 重复标题行
		attr.setRepeatHeaderRowFrom(0);
		attr.setRepeatHeaderRowTo(1);
		// 重复标题列
		attr.setRepeatHeaderColumnFrom(0);
		attr.setRepeatHeaderColumnTo(1);
		// 重复结尾行
		attr.setRepeatFooterRowFrom(2);
		attr.setRepeatFooterRowTo(3);
		// 重复结尾列
		attr.setRepeatFooterColumnFrom(2);
		attr.setRepeatFooterColumnTo(3);

		/*
		 * 冻结
		 */
		// 分页冻结
		attr.setUsePageFrozenRow(true);
		attr.setUsePageFrozenColumn(true);
		// 填报冻结
		sheet.getReportSettings().setWriteFrozenColumnRow(ColumnRow.valueOf("B3"));

		sheet.setReportPageAttr(attr);
	}

	/**
	 * 报表引擎属性
	 * 
	 * @param sheet
	 */
	private static void layer(WorkSheet sheet) {
		LayerReportAttr attr = new LayerReportAttr();
		// 使用按页运算分段执行报表
		attr.setPageQuery(true);
		// 每页记录数
		attr.setCountPerPage(65);
		sheet.setLayerReportAttr(attr);
	}

	/**
	 * 权限管理
	 * 
	 * @param workbook
	 */
	private static void privilege(WorkBook workbook, WorkSheet sheet) {
		/*
		 * 单元格
		 */
		DefaultTemplateCellElement cell = new DefaultTemplateCellElement(0, 0, "A1");
		CellPrivilegeControl cc = new CellPrivilegeControl();
		// 单元格可见
		cc.addInvisibleRole("开发维护工程师");
		// 单元格新值
		cc.getNewValueMap().put("", "123");
		cell.setCellPrivilegeControl(cc);

		/*
		 * 控件
		 */
		TextArea w = new TextArea();
		WidgetPrivilegeControl wc = new WidgetPrivilegeControl();
		wc.addInvisibleRole("开发部长");
		wc.addUnusableRole("开发部长");
		w.setWidgetPrivilegeControl(wc);
		cell.setWidget(w);

		/*
		 * 行
		 */
		sheet.addRowPrivilegeControl(0, "开发部长");
		/*
		 * 列
		 */
		sheet.addColumnPrivilegeControl(0, "开发部长");

		/*
		 * sheet
		 */
		WorkSheetPrivilegeControl sc = new WorkSheetPrivilegeControl();
		sc.addInvisibleRole("开发部长");
		sheet.setWorkSheetPrivilegeControl(sc);

		sheet.addCellElement(cell);
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值