Fix missing print parameters
This commit is contained in:
@ -934,6 +934,19 @@ class SumasenExcel:
|
|||||||
# self.current_sheet.merge_cells(target_merge_range)
|
# self.current_sheet.merge_cells(target_merge_range)
|
||||||
# #print(f"Merge : {target_merge_range}")
|
# #print(f"Merge : {target_merge_range}")
|
||||||
|
|
||||||
|
|
||||||
|
# 印刷範囲の設定をコピー
|
||||||
|
if self.template_sheet.print_area:
|
||||||
|
self.current_sheet.print_area = self.template_sheet.print_area
|
||||||
|
|
||||||
|
# 印刷タイトルの設定をコピー
|
||||||
|
if self.template_sheet.print_title_rows:
|
||||||
|
self.current_sheet.print_title_rows = self.template_sheet.print_title_rows
|
||||||
|
if self.template_sheet.print_title_cols:
|
||||||
|
self.current_sheet.print_title_cols = self.template_sheet.print_title_cols
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Copy cell contents and styles
|
# Copy cell contents and styles
|
||||||
row_offset = target_min_row - orig_min_row
|
row_offset = target_min_row - orig_min_row
|
||||||
for row in range(orig_min_row, orig_max_row + 1):
|
for row in range(orig_min_row, orig_max_row + 1):
|
||||||
@ -958,16 +971,24 @@ class SumasenExcel:
|
|||||||
target_page_setup = self.current_sheet.page_setup
|
target_page_setup = self.current_sheet.page_setup
|
||||||
source_page_setup = self.template_sheet.page_setup
|
source_page_setup = self.template_sheet.page_setup
|
||||||
|
|
||||||
# Copy supported page setup attributes
|
# ページ設定属性のコピー
|
||||||
copyable_attrs = [
|
page_setup_attrs = [
|
||||||
'paperSize',
|
'orientation', # 印刷の向き
|
||||||
'orientation',
|
'paperSize', # 用紙サイズ
|
||||||
'fitToHeight',
|
'scale', # 拡大縮小率
|
||||||
'fitToWidth',
|
'fitToHeight', # 高さの自動調整
|
||||||
'scale'
|
'fitToWidth', # 幅の自動調整
|
||||||
|
'firstPageNumber', # 開始ページ番号
|
||||||
|
'useFirstPageNumber', # 開始ページ番号の使用
|
||||||
|
'blackAndWhite', # モノクロ印刷
|
||||||
|
'draft', # 下書きモード
|
||||||
|
'cellComments', # コメントの印刷方法
|
||||||
|
'errors', # エラーの表示方法
|
||||||
|
'horizontalDpi', # 水平DPI
|
||||||
|
'verticalDpi' # 垂直DPI
|
||||||
]
|
]
|
||||||
|
|
||||||
for attr in copyable_attrs:
|
for attr in page_setup_attrs:
|
||||||
try:
|
try:
|
||||||
if hasattr(source_page_setup, attr):
|
if hasattr(source_page_setup, attr):
|
||||||
setattr(target_page_setup, attr, getattr(source_page_setup, attr))
|
setattr(target_page_setup, attr, getattr(source_page_setup, attr))
|
||||||
@ -1005,12 +1026,61 @@ class SumasenExcel:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.warning(f"Could not copy print option {attr}: {str(e)}")
|
logging.warning(f"Could not copy print option {attr}: {str(e)}")
|
||||||
|
|
||||||
|
# ヘッダー/フッターのコピー
|
||||||
|
if hasattr(self.template_sheet, 'oddHeader'):
|
||||||
|
self.current_sheet.oddHeader = self.template_sheet.oddHeader
|
||||||
|
if hasattr(self.template_sheet, 'oddFooter'):
|
||||||
|
self.current_sheet.oddFooter = self.template_sheet.oddFooter
|
||||||
|
if hasattr(self.template_sheet, 'evenHeader'):
|
||||||
|
self.current_sheet.evenHeader = self.template_sheet.evenHeader
|
||||||
|
if hasattr(self.template_sheet, 'evenFooter'):
|
||||||
|
self.current_sheet.evenFooter = self.template_sheet.evenFooter
|
||||||
|
if hasattr(self.template_sheet, 'firstHeader'):
|
||||||
|
self.current_sheet.firstHeader = self.template_sheet.firstHeader
|
||||||
|
if hasattr(self.template_sheet, 'firstFooter'):
|
||||||
|
self.current_sheet.firstFooter = self.template_sheet.firstFooter
|
||||||
|
|
||||||
|
# 用紙の向きと用紙サイズの検証
|
||||||
|
self._verify_page_setup()
|
||||||
|
|
||||||
return {"status": True, "message": "Successfully copied template range"}
|
return {"status": True, "message": "Successfully copied template range"}
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.error(f"Error in copy_template_to_current: {str(e)}")
|
logging.error(f"Error in copy_template_to_current: {str(e)}")
|
||||||
return {"status": False, "message": f"Exception in copy_template_to_current: {str(e)}"}
|
return {"status": False, "message": f"Exception in copy_template_to_current: {str(e)}"}
|
||||||
|
|
||||||
|
def _verify_page_setup(self):
|
||||||
|
"""
|
||||||
|
ページ設定が正しくコピーされたことを検証する
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
# 用紙の向きの検証
|
||||||
|
if self.template_sheet.page_setup.orientation != self.current_sheet.page_setup.orientation:
|
||||||
|
logging.warning(
|
||||||
|
f"Page orientation mismatch: template={self.template_sheet.page_setup.orientation}, "
|
||||||
|
f"current={self.current_sheet.page_setup.orientation}"
|
||||||
|
)
|
||||||
|
|
||||||
|
# 用紙サイズの検証
|
||||||
|
if self.template_sheet.page_setup.paperSize != self.current_sheet.page_setup.paperSize:
|
||||||
|
logging.warning(
|
||||||
|
f"Paper size mismatch: template={self.template_sheet.page_setup.paperSize}, "
|
||||||
|
f"current={self.current_sheet.page_setup.paperSize}"
|
||||||
|
)
|
||||||
|
|
||||||
|
# 余白設定の検証
|
||||||
|
margin_attrs = ['left', 'right', 'top', 'bottom', 'header', 'footer']
|
||||||
|
for attr in margin_attrs:
|
||||||
|
template_margin = getattr(self.template_sheet.page_margins, attr)
|
||||||
|
current_margin = getattr(self.current_sheet.page_margins, attr)
|
||||||
|
if abs(template_margin - current_margin) > 0.01: # 小数点の誤差を考慮
|
||||||
|
logging.warning(
|
||||||
|
f"Margin {attr} mismatch: template={template_margin}, current={current_margin}"
|
||||||
|
)
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(f"Error in _verify_page_setup: {str(e)}")
|
||||||
|
|
||||||
# Style operations
|
# Style operations
|
||||||
def apply_style(
|
def apply_style(
|
||||||
self,
|
self,
|
||||||
|
|||||||
Reference in New Issue
Block a user