?? ufrmexportbusinessdata.pas
字號:
btnExecute.Enabled := false;
PageControl1.Enabled := false;
try
GetExportBusinessData(mmBusinessNameOrID.Text);
ExportBusinessData(mmBusinessNameOrID.Text, edtExportFile.Text);
application.MessageBox('導(dǎo)出流程權(quán)限設(shè)置數(shù)據(jù)成功完成', '系統(tǒng)提示', MB_ICONINFORMATION);
finally
cdsBusinessGrant.Close;
cdsBusinessConfig.Close;
cdsProcessConfig.Close;
cdsProcessOperates.Close;
btnExecute.Enabled := true;
PageControl1.Enabled := true;
end;
end;
procedure TfrmExportBusinessData.cdsBusinessGrantAfterOpen(
DataSet: TDataSet);
var
i: integer;
begin
for i := 0 to DataSet.FieldCount - 1 do
DataSet.Fields[i].DisplayWidth := 10;
end;
procedure TfrmExportBusinessData.ExportBusinessData(ABusinessNameOrIDs,
AFileName: string);
var
i, intRow, intBaseCol, intBaseRow: integer;
intBusinessStartRow, intProcessStartRow, intRoleStartRow: integer;
tmpXLSReadWriteAgent: TXLSReadWriteAgent;
xc: TExcelColor;
begin
if cdsBusinessGrant.IsEmpty then
exit;
if FileExists(AFileName) then
DeleteFile(AFileName)
else
if not DirectoryExists(ExtractFileDir(AFileName)) then
begin
ForceDirectories(ExtractFileDir(AFileName));
if not DirectoryExists(ExtractFileDir(AFileName)) then
raise Exception.Create('輸入的文件名路徑無法創(chuàng)建');
end;
tmpXLSReadWriteAgent := TXLSReadWriteAgent.Create(self);
try
tmpXLSReadWriteAgent.FileName := AFileName;
tmpXLSReadWriteAgent.ReadFile;
intBaseCol := 0;
intBaseRow := 0;
intRow := intBaseRow + 1;
ShowExecuteInfo('開始導(dǎo)出流程');
//標題行內(nèi)容
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol, intBaseRow, '流程');
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 1, intBaseRow, '過程');
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 2, intBaseRow, '角色');
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 3, intBaseRow, '菜單');
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 4, intBaseRow, '模塊');
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 5, intBaseRow, '分區(qū)');
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 6, intBaseRow, '權(quán)限');
tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Range.Items[intBaseCol, intBaseRow, intBaseCol + 6, intBaseRow].FillPatternForeColor := xc26;
for i := 0 to 6 do
tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Range.Items[intBaseCol + i, intBaseRow, intBaseCol + i, intBaseRow].BorderOutlineStyle := cbsThin;
cdsBusinessGrant.First;
while not cdsBusinessGrant.Eof do
begin
if cdsBusinessGrant.FieldByName('data_type').AsString = 'Business' then
begin
ShowExecuteInfo(Format('正在導(dǎo)出流程 %s 相關(guān)數(shù)據(jù)', [cdsBusinessGrant.FieldByName('business_name').AsString]));
if intRow > intBaseRow then
tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Range.Items[intBaseCol, intBusinessStartRow, intBaseCol + 6, intRow - 1].BorderOutlineStyle := cbsThin;
intBusinessStartRow := intRow;
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol, intRow, cdsBusinessGrant.FieldByName('business_name').AsString);
tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Cell[intBaseCol, intRow].FontStyle := [xfsBold];
tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Range.Items[intBaseCol, intRow, intBaseCol + 6, intRow].BorderOutlineStyle := cbsThin;
tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Range.Items[intBaseCol, intRow, intBaseCol + 6, intRow].FillPatternForeColor := xc27;
tmpXLSReadWriteAgent.MergedCells(intBaseCol, intRow, intBaseCol + 6, intRow);
//導(dǎo)出流程配置
if cdsBusinessConfig.Locate('business_id', cdsBusinessGrant.FieldByName('business_id').AsString, []) then
begin
inc(intRow);
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 1, intRow, '辦理期限');
tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Cell[intBaseCol + 1, intRow].FontStyle := [xfsBold];//xfsItalic, xfsBold
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 2, intRow, cdsBusinessConfig.FieldByName('time_limit').AsString);
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 3, intRow, '主辦部門');
tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Cell[intBaseCol + 3, intRow].FontStyle := [xfsBold];
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 4, intRow, cdsBusinessConfig.FieldByName('organ_name').AsString);
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 5, intRow, '主辦人員');
tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Cell[intBaseCol + 5, intRow].FontStyle := [xfsBold];
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 6, intRow, cdsBusinessConfig.FieldByName('emp_name').AsString);
//tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Range.Items[intBaseCol, intRow, intBaseCol + 6, intRow].BorderOutlineStyle := cbsThin;
tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Range.Items[intBaseCol, intRow, intBaseCol + 6, intRow].FillPatternForeColor := xcYellow;
end;
end
else if cdsBusinessGrant.FieldByName('data_type').AsString = 'Process' then
begin
ShowExecuteInfo(Format('正在導(dǎo)出過程 %s.%s 相關(guān)數(shù)據(jù)',
[cdsBusinessGrant.FieldByName('business_name').AsString,
cdsBusinessGrant.FieldByName('process_name').AsString]));
intProcessStartRow := intRow;
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 1, intRow, cdsBusinessGrant.FieldByName('process_name').AsString);
//tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Range.Items[intBaseCol + 1, intRow, intBaseCol + 6, intRow].BorderOutlineStyle := cbsThin;
//tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Range.Items[intBaseCol + 1, intRow, intBaseCol + 6, intRow].FillPatternForeColor := xcPink;//IntToXColor($00D8EBEB);//xcYellow;
tmpXLSReadWriteAgent.MergedCells(intBaseCol + 1, intRow, intBaseCol + 6, intRow);
//導(dǎo)出過程配置
if cdsProcessConfig.Locate('business_id', cdsBusinessGrant.FieldByName('process_id').AsString, []) then
begin
inc(intRow);
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 2, intRow, '辦理期限');
tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Cell[intBaseCol + 2, intRow].FontStyle := [xfsBold];
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 3, intRow, cdsProcessConfig.FieldByName('time_limit').AsString);
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 4, intRow, '是否可辦結(jié)');
tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Cell[intBaseCol + 4, intRow].FontStyle := [xfsBold];
if cdsProcessConfig.FieldByName('can_finish').AsString = '0' then
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 5, intRow, '否')
else
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 5, intRow, '是');
inc(intRow);
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 2, intRow, '辦理部門');
tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Cell[intBaseCol + 2, intRow].FontStyle := [xfsBold];
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 3, intRow, cdsProcessConfig.FieldByName('organ_name').AsString);
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 4, intRow, '辦理角色');
tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Cell[intBaseCol + 4, intRow].FontStyle := [xfsBold];
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 5, intRow, cdsProcessConfig.FieldByName('role_name').AsString);
inc(intRow);
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 2, intRow, '辦理人員');
tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Cell[intBaseCol + 2, intRow].FontStyle := [xfsBold];
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 3, intRow, cdsProcessConfig.FieldByName('emp_name').AsString);
tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Range.Items[intBaseCol + 1, intRow - 2, intBaseCol + 6, intRow].FillPatternForeColor := xcYellow;
end;
//導(dǎo)出過程更多辦理部門、角色
cdsProcessOperates.Filter := 'business_id = ' + QuotedStr(cdsBusinessGrant.FieldByName('process_id').AsString);
cdsProcessOperates.Filtered := true;
if not cdsProcessOperates.IsEmpty then
begin
inc(intRow);
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 2, intRow, '更多的辦理部門、角色');
tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Cell[intBaseCol + 2, intRow].FontStyle := [xfsBold];
inc(intRow);
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 2, intRow, '承辦類型');
tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Cell[intBaseCol + 2, intRow].FontStyle := [xfsBold];
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 3, intRow, '承辦名稱');
tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Cell[intBaseCol + 3, intRow].FontStyle := [xfsBold];
while not cdsProcessOperates.Eof do
begin
inc(intRow);
if cdsProcessOperates.FieldByName('type').AsString = '0' then
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 2, intRow, '部門')
else
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 2, intRow, '角色');
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 3, intRow, cdsProcessOperates.FieldByName('name').AsString);
cdsProcessOperates.Next;
end;
tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Range.Items[intBaseCol + 1, intRow - 2 - cdsProcessOperates.RecordCount, intBaseCol + 6, intRow].FillPatternForeColor := xcYellow;
end;
end
else if cdsBusinessGrant.FieldByName('data_type').AsString = 'Role' then
begin
ShowExecuteInfo(Format('正在導(dǎo)出角色 %s.%s.%s 相關(guān)數(shù)據(jù)',
[cdsBusinessGrant.FieldByName('business_name').AsString,
cdsBusinessGrant.FieldByName('process_name').AsString,
cdsBusinessGrant.FieldByName('role_name').AsString]));
intRoleStartRow := intRow;
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 2, intRow, cdsBusinessGrant.FieldByName('role_name').AsString);
//tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Range.Items[intBaseCol + 2, intRow, intBaseCol + 6, intRow].BorderOutlineStyle := cbsThin;
//tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Range.Items[intBaseCol + 2, intRow, intBaseCol + 6, intRow].FillPatternForeColor := IntToXColor($00D8EBEB);//xcYellow;
tmpXLSReadWriteAgent.MergedCells(intBaseCol + 2, intRow, intBaseCol + 6, intRow);
end
else if cdsBusinessGrant.FieldByName('data_type').AsString = 'Menu' then
begin
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 3, intRow, cdsBusinessGrant.FieldByName('menu_name').AsString);
//tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Range.Items[intBaseCol + 3, intRow, intBaseCol + 6, intRow].BorderOutlineStyle := cbsThin;
//tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Range.Items[intBaseCol + 3, intRow, intBaseCol + 6, intRow].FillPatternForeColor := IntToXColor($00D8EBEB);//xcYellow;
tmpXLSReadWriteAgent.MergedCells(intBaseCol + 3, intRow, intBaseCol + 6, intRow);
end
else if cdsBusinessGrant.FieldByName('data_type').AsString = 'Module' then
begin
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 4, intRow, cdsBusinessGrant.FieldByName('module_name').AsString);
//tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Range.Items[intBaseCol + 4, intRow, intBaseCol + 6, intRow].BorderOutlineStyle := cbsThin;
//tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Range.Items[intBaseCol + 4, intRow, intBaseCol + 6, intRow].FillPatternForeColor := IntToXColor($00D8EBEB);//xcYellow;
tmpXLSReadWriteAgent.MergedCells(intBaseCol + 4, intRow, intBaseCol + 6, intRow);
end
else if cdsBusinessGrant.FieldByName('data_type').AsString = 'Block' then
begin
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 5, intRow, cdsBusinessGrant.FieldByName('block_name').AsString);
//tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Range.Items[intBaseCol + 5, intRow, intBaseCol + 6, intRow].BorderOutlineStyle := cbsThin;
//tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Range.Items[intBaseCol + 5, intRow, intBaseCol + 6, intRow].FillPatternForeColor := IntToXColor($00D8EBEB);//xcYellow;
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol + 6, intRow, cdsBusinessGrant.FieldByName('block_grant_name').AsString);
//tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Range.Items[intBaseCol + 6, intRow, intBaseCol + 6, intRow].BorderOutlineStyle := cbsThin;
end;
inc(intRow);
cdsBusinessGrant.Next;
end;
tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Range.Items[intBaseCol, intBusinessStartRow, intBaseCol + 6, intRow - 1].BorderOutlineStyle := cbsThin;
inc(intRow);
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol, intRow, '備注:');
inc(intRow);
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol, intRow, '1.如果單元格出現(xiàn)ID值,表示相應(yīng)的引用基礎(chǔ)數(shù)據(jù)被刪除。如角色列出現(xiàn)ID值表示對應(yīng)的角色數(shù)據(jù)已經(jīng)不存在。');
inc(intRow);
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol, intRow, '2.“T_Node_”開始的分區(qū)為導(dǎo)航樹分區(qū)。');
inc(intRow);
tmpXLSReadWriteAgent.SetCellStringValue(intBaseCol, intRow, '3.隱藏權(quán)限的分區(qū)未導(dǎo)出。');
tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Range.Items[intBaseCol, intRow - 3, intBaseCol, intRow].FontColor := xcGray50;
{inc(intRow);
for xc := Low(TExcelColor) to High(TExcelColor) do
begin
tmpXLSReadWriteAgent.SetCellStringValue(0, intRow, GetEnumName(TypeInfo(TExcelColor), Ord(xc)));
tmpXLSReadWriteAgent.XLSReadWrite.Sheet[tmpXLSReadWriteAgent.ActiveSheetIndex].Range.Items[0, intRow, 0, intRow].FillPatternForeColor := xc;
inc(intRow);
end;}
tmpXLSReadWriteAgent.WriteFile;
finally
tmpXLSReadWriteAgent.Free;
ShowExecuteInfo('');
end;
end;
function TfrmExportBusinessData.GetExcelAgent: IExcelAgent;
begin
{if FExcelAgent = nil then
FExcelAgent := TExcelAgentHelper.GetExcelAgentInstance(self);}
Result := XLSReadWriteAgent;
end;
function TfrmExportBusinessData.GetXLSReadWriteAgent: TXLSReadWriteAgent;
begin
if FXLSReadWriteAgent = nil then
FXLSReadWriteAgent := TXLSReadWriteAgent.Create(self);
Result := FXLSReadWriteAgent;
end;
procedure TfrmExportBusinessData.ShowExecuteInfo(AInfo: string);
begin
lblInfo.Caption := AInfo;
lblInfo.Refresh;
Application.ProcessMessages;
end;
procedure TfrmExportBusinessData.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TfrmExportBusinessData.sbtnSelEmpClick(Sender: TObject);
begin
if SaveDialog1.Execute then
edtExportFile.Text := SaveDialog1.FileName;
end;
procedure TfrmExportBusinessData.FormDestroy(Sender: TObject);
begin
FDataAccess := nil;
end;
end.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -