dwg only 버튼 추가

This commit is contained in:
2025-07-23 13:15:27 +09:00
parent b13e981d04
commit a87644d8be
4 changed files with 363 additions and 29 deletions

View File

@@ -841,6 +841,94 @@ namespace DwgExtractorManual.Models
}
}
/// <summary>
/// DWG 전용 매핑 워크북을 생성하고 저장합니다 (PDF 컬럼 제외).
/// </summary>
/// <param name="resultFolderPath">결과 파일 저장 폴더 경로</param>
public void SaveDwgOnlyMappingWorkbook(string resultFolderPath)
{
try
{
string timestamp = DateTime.Now.ToString("yyyyMMdd_HHmmss");
string savePath = Path.Combine(resultFolderPath, $"{timestamp}_DwgOnly_Mapping.xlsx");
Debug.WriteLine($"[DEBUG] DWG 전용 매핑 워크북 생성 시작: {savePath}");
// Excel 애플리케이션 초기화 확인
if (excelApplication == null)
{
excelApplication = new Excel.Application();
excelApplication.Visible = false;
Debug.WriteLine("[DEBUG] 새 Excel 애플리케이션 생성됨 (DWG 전용)");
}
// DWG 전용 워크북 생성
var dwgOnlyWorkbook = excelApplication.Workbooks.Add();
var dwgOnlyWorksheet = (Excel.Worksheet)dwgOnlyWorkbook.Worksheets[1];
dwgOnlyWorksheet.Name = "DWG Mapping Data";
// 헤더 생성 (PDF Value 컬럼 제외)
dwgOnlyWorksheet.Cells[1, 1] = "파일명";
dwgOnlyWorksheet.Cells[1, 2] = "Map Key";
dwgOnlyWorksheet.Cells[1, 3] = "AI Label";
dwgOnlyWorksheet.Cells[1, 4] = "DWG Tag";
dwgOnlyWorksheet.Cells[1, 5] = "DWG Value";
// 헤더 스타일 적용
var headerRange = dwgOnlyWorksheet.Range["A1:E1"];
headerRange.Font.Bold = true;
headerRange.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightGray);
headerRange.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;
// 데이터 입력
int row = 2;
foreach (var fileEntry in FileToMapkeyToLabelTagValuePdf)
{
string fileName = fileEntry.Key;
foreach (var mapEntry in fileEntry.Value)
{
string mapKey = mapEntry.Key;
var (aiLabel, dwgTag, dwgValue, pdfValue) = mapEntry.Value;
dwgOnlyWorksheet.Cells[row, 1] = fileName;
dwgOnlyWorksheet.Cells[row, 2] = mapKey;
dwgOnlyWorksheet.Cells[row, 3] = aiLabel;
dwgOnlyWorksheet.Cells[row, 4] = dwgTag;
dwgOnlyWorksheet.Cells[row, 5] = dwgValue;
row++;
}
}
// 컬럼 자동 크기 조정
dwgOnlyWorksheet.Columns.AutoFit();
// 파일 저장
string directory = Path.GetDirectoryName(savePath);
if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory))
{
Directory.CreateDirectory(directory);
}
dwgOnlyWorkbook.SaveAs(savePath,
FileFormat: Excel.XlFileFormat.xlOpenXMLWorkbook,
AccessMode: Excel.XlSaveAsAccessMode.xlNoChange);
Debug.WriteLine($"✅ DWG 전용 매핑 워크북 저장 완료: {Path.GetFileName(savePath)}");
// 워크북 정리
dwgOnlyWorkbook.Close(false);
System.Runtime.InteropServices.Marshal.ReleaseComObject(dwgOnlyWorksheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(dwgOnlyWorkbook);
}
catch (System.Exception ex)
{
Debug.WriteLine($"❌ DWG 전용 매핑 워크북 저장 중 오류: {ex.Message}");
Debug.WriteLine($" 스택 트레이스: {ex.StackTrace}");
throw;
}
}
/// <summary>
/// 현재 Excel 워크북을 지정된 경로에 저장하고 Excel 애플리케이션을 종료합니다.
/// </summary>