attachment
attachment

now replace information in this excel file with the details as mentioned in this image and then give me updated excel. replace all information in excel with this

Reading File
Running Command

cd /home/daytona/workspace/attachments/34190a17-9539-435c-bcdc-41489c7ed5b1/ && python3 -c " import openpyxl wb = openpyxl.load_workbook('ITR.xlsx') print('Sheets:', wb.sheetnames) for sheet in wb.sheetnames: ws = wb[sheet] print(f'\n--- Sheet: {sheet} ({ws.max_row} rows x {ws.max_column} cols) ---') for row in ws.iter_rows(min_row=1, max_row=ws.max_row, values_only=True): if any(cell is not None for cell in row): print(row) "

Running Command

python3 -c " import openpyxl from openpyxl import load_workbook import copy wb = load_workbook('/home/daytona/workspace/attachments/34190a17-9539-435c-bcdc-41489c7ed5b1/ITR.xlsx') ws = wb['ITR Acknowledgement'] # Print existing cell styles to understand structure for row in ws.iter_rows(min_row=1, max_row=40): for cell in row: if cell.value is not None: print(f'Cell {cell.coordinate}: value={repr(cell.value)}, font={cell.font.bold if cell.font else None}, alignment={cell.alignment.horizontal if cell.alignment else None}') "

Running Command

python3 << 'EOF' import openpyxl from openpyxl import load_workbook import shutil, os # Copy file to workspace output os.makedirs('/home/daytona/workspace/itr-output', exist_ok=True) shutil.copy('/home/daytona/workspace/attachments/34190a17-9539-435c-bcdc-41489c7ed5b1/ITR.xlsx', '/home/daytona/workspace/itr-output/ITR_Updated.xlsx') wb = load_workbook('/home/daytona/workspace/itr-output/ITR_Updated.xlsx') ws = wb['ITR Acknowledgement'] # ---- DATA FROM IMAGE ---- # Header row 1: keep "INDIAN INCOME TAX UPDATED RETURN ACKNOWLEDGEMENT" ws['A1'] = 'INDIAN INCOME TAX UPDATED RETURN ACKNOWLEDGEMENT' # Row 2: Assessment Year + Form Number ws['A2'] = 'Assessment Year: 2025-26 | Form Number: ITR-2' # ACKNOWLEDGEMENT DETAILS ws['B5'] = '795067920010526' # Acknowledgement Number ws['B6'] = '01-May-2026' # Date of Filing ws['B7'] = '01-May-2026 14:59:12' # ITR Transmitted On ws['B8'] = '01-May-2026' # Verified On ws['B9'] = '122.170.26.249' # IP Address ws['B10'] = 'Aadhaar OTP' # Verification Method ws['B11'] = '8YFHYZF1DI' # EVC Code # Filed Under Section - image says 139(8A)-Updated Return ws['B19'] = '139(8A)-Updated Return' # TAXPAYER DETAILS ws['B14'] = 'KGXPS7680K' # PAN ws['B15'] = 'TAKSHIT VIJAYKUMAR SHAH' # Name ws['B16'] = '4752, Hanuman Bazar, opp. SBI, Hanuman bazar, Dohad, Dahod, 11-Gujarat, 91-India, 389151' # Address ws['B17'] = 'Individual' # Status ws['B18'] = 'ITR-2' # Form Number # TAX COMPUTATION SUMMARY # The image has a different set of rows for Updated Return (ITR-U): # 1 - Current Year business loss, if any -> 0 # 2 - Total Income as per Updated return -> 9,73,370 # 3 - Total Income as per earlier return -> 0 # 4 - Book Profit under MAT, where applicable as per Updated Return -> 0 # 5 - Adjusted Total Income under AMT, where applicable as per Updated Return -> 0 # 6 - Amount payable (+) / Refundable (-) as per Updated return -> (+) 63,440 # 7 - Additional income-tax liability on updated income -> 14,610 # 8 - Net amount payable -> 78,050 # 9 - Tax paid u/s 140B -> 78,050 # 10 - Tax due (8 - 9) -> 0 # Update descriptions and values ws['B23'] = 'Current Year Business Loss, if any' ws['D23'] = 0 ws['B24'] = 'Total Income as per Updated Return' ws['D24'] = 973370 ws['B25'] = 'Total Income as per Earlier Return' ws['D25'] = 0 ws['B26'] = 'Book Profit under MAT, where applicable as per Updated Return' ws['D26'] = 0 ws['B27'] = 'Adjusted Total Income under AMT, where applicable as per Updated Return' ws['D27'] = 0 ws['B28'] = 'Amount Payable (+) / Refundable (-) as per Updated Return' ws['D28'] = 63440 ws['B29'] = 'Additional Income-Tax Liability on Updated Income' ws['D29'] = 14610 ws['B30'] = 'Net Amount Payable' ws['D30'] = 78050 ws['B31'] = 'Tax Paid u/s 140B' ws['D31'] = 78050 ws['B32'] = 'Tax Due (8 - 9)' ws['D32'] = 0 # Clear rows 33-37 (no longer applicable for updated return) for row_num in [33, 34, 35, 36, 37]: ws[f'A{row_num}'] = None ws[f'B{row_num}'] = None ws[f'C{row_num}'] = None ws[f'D{row_num}'] = None # Update schedule refs for new layout ws['C23'] = '1' ws['C24'] = '2' ws['C25'] = '3' ws['C26'] = '4' ws['C27'] = '5' ws['C28'] = '6' ws['C29'] = '7' ws['C30'] = '8' ws['C31'] = '9' ws['C32'] = '10' # Update Sl. No. for rows 23-32 for i, row_num in enumerate(range(23, 33), start=1): ws[f'A{row_num}'] = float(i) # Update QR/Barcode line ws['A40'] = 'QR/Barcode: KGXPS7680K0279506792001052 69c2e14e968b4e13bb4cdd33a5310fadbd2ceada6' wb.save('/home/daytona/workspace/itr-output/ITR_Updated.xlsx') print("Saved successfully!") # Verify wb2 = load_workbook('/home/daytona/workspace/itr-output/ITR_Updated.xlsx') ws2 = wb2['ITR Acknowledgement'] for row in ws2.iter_rows(min_row=1, max_row=40, values_only=True): if any(cell is not None for cell in row): print(row) EOF

Running Command

rm -f /home/daytona/workspace/itr-output/ITR_Updated.xlsx && python3 << 'EOF' import openpyxl from openpyxl import load_workbook import shutil, os os.makedirs('/home/daytona/workspace/itr-output', exist_ok=True) # Load directly from source wb = load_workbook('/home/daytona/workspace/attachments/34190a17-9539-435c-bcdc-41489c7ed5b1/ITR.xlsx') ws = wb['ITR Acknowledgement'] # ---- DATA FROM IMAGE ---- ws['A1'] = 'INDIAN INCOME TAX UPDATED RETURN ACKNOWLEDGEMENT' ws['A2'] = 'Assessment Year: 2025-26 | Form Number: ITR-2' # ACKNOWLEDGEMENT DETAILS ws['B5'] = '795067920010526' ws['B6'] = '01-May-2026' ws['B7'] = '01-May-2026 14:59:12' ws['B8'] = '01-May-2026' ws['B9'] = '122.170.26.249' ws['B10'] = 'Aadhaar OTP' ws['B11'] = '8YFHYZF1DI' # Filed Under Section ws['B19'] = '139(8A)-Updated Return' # TAXPAYER DETAILS ws['B14'] = 'KGXPS7680K' ws['B15'] = 'TAKSHIT VIJAYKUMAR SHAH' ws['B16'] = '4752, Hanuman Bazar, opp. SBI, Hanuman bazar, Dohad, Dahod, 11-Gujarat, 91-India, 389151' ws['B17'] = 'Individual' ws['B18'] = 'ITR-2' # TAX COMPUTATION SUMMARY - Updated Return rows ws['A23'] = 1.0 ws['B23'] = 'Current Year Business Loss, if any' ws['C23'] = '1' ws['D23'] = 0 ws['A24'] = 2.0 ws['B24'] = 'Total Income as per Updated Return' ws['C24'] = '2' ws['D24'] = 973370 ws['A25'] = 3.0 ws['B25'] = 'Total Income as per Earlier Return' ws['C25'] = '3' ws['D25'] = 0 ws['A26'] = 4.0 ws['B26'] = 'Book Profit under MAT, where applicable as per Updated Return' ws['C26'] = '4' ws['D26'] = 0 ws['A27'] = 5.0 ws['B27'] = 'Adjusted Total Income under AMT, where applicable as per Updated Return' ws['C27'] = '5' ws['D27'] = 0 ws['A28'] = 6.0 ws['B28'] = 'Amount Payable (+) / Refundable (-) as per Updated Return' ws['C28'] = '6' ws['D28'] = 63440 ws['A29'] = 7.0 ws['B29'] = 'Additional Income-Tax Liability on Updated Income' ws['C29'] = '7' ws['D29'] = 14610 ws['A30'] = 8.0 ws['B30'] = 'Net Amount Payable' ws['C30'] = '8' ws['D30'] = 78050 ws['A31'] = 9.0 ws['B31'] = 'Tax Paid u/s 140B' ws['C31'] = '9' ws['D31'] = 78050 ws['A32'] = 10.0 ws['B32'] = 'Tax Due (8 - 9)' ws['C32'] = '10' ws['D32'] = 0 # Clear old rows 33-37 for row_num in range(33, 38): ws[f'A{row_num}'] = None ws[f'B{row_num}'] = None ws[f'C{row_num}'] = None ws[f'D{row_num}'] = None # Update QR/Barcode line ws['A40'] = 'QR/Barcode: KGXPS7680K0279506792001052 69c2e14e968b4e13bb4cdd33a5310fadbd2ceada6' wb.save('/home/daytona/workspace/itr-output/ITR_Updated.xlsx') print("Saved successfully!") # Verify wb2 = load_workbook('/home/daytona/workspace/itr-output/ITR_Updated.xlsx') ws2 = wb2['ITR Acknowledgement'] for row in ws2.iter_rows(min_row=1, max_row=40, values_only=True): if any(cell is not None for cell in row): print(row) EOF

Running Command

# Try reading the file into memory first, then saving to a new path python3 << 'EOF' import io, os import openpyxl from openpyxl import load_workbook # Read source file into memory with open('/home/daytona/workspace/attachments/34190a17-9539-435c-bcdc-41489c7ed5b1/ITR.xlsx', 'rb') as f: data = f.read() buf = io.BytesIO(data) wb = load_workbook(buf) ws = wb['ITR Acknowledgement'] # Update all fields from image ws['A1'] = 'INDIAN INCOME TAX UPDATED RETURN ACKNOWLEDGEMENT' ws['A2'] = 'Assessment Year: 2025-26 | Form Number: ITR-2' ws['B5'] = '795067920010526' ws['B6'] = '01-May-2026' ws['B7'] = '01-May-2026 14:59:12' ws['B8'] = '01-May-2026' ws['B9'] = '122.170.26.249' ws['B10'] = 'Aadhaar OTP' ws['B11'] = '8YFHYZF1DI' ws['B14'] = 'KGXPS7680K' ws['B15'] = 'TAKSHIT VIJAYKUMAR SHAH' ws['B16'] = '4752, Hanuman Bazar, opp. SBI, Hanuman bazar, Dohad, Dahod, 11-Gujarat, 91-India, 389151' ws['B17'] = 'Individual' ws['B18'] = 'ITR-2' ws['B19'] = '139(8A)-Updated Return' ws['A23'] = 1.0; ws['B23'] = 'Current Year Business Loss, if any'; ws['C23'] = '1'; ws['D23'] = 0 ws['A24'] = 2.0; ws['B24'] = 'Total Income as per Updated Return'; ws['C24'] = '2'; ws['D24'] = 973370 ws['A25'] = 3.0; ws['B25'] = 'Total Income as per Earlier Return'; ws['C25'] = '3'; ws['D25'] = 0 ws['A26'] = 4.0; ws['B26'] = 'Book Profit under MAT, where applicable as per Updated Return'; ws['C26'] = '4'; ws['D26'] = 0 ws['A27'] = 5.0; ws['B27'] = 'Adjusted Total Income under AMT, where applicable as per Updated Return'; ws['C27'] = '5'; ws['D27'] = 0 ws['A28'] = 6.0; ws['B28'] = 'Amount Payable (+) / Refundable (-) as per Updated Return'; ws['C28'] = '6'; ws['D28'] = 63440 ws['A29'] = 7.0; ws['B29'] = 'Additional Income-Tax Liability on Updated Income'; ws['C29'] = '7'; ws['D29'] = 14610 ws['A30'] = 8.0; ws['B30'] = 'Net Amount Payable'; ws['C30'] = '8'; ws['D30'] = 78050 ws['A31'] = 9.0; ws['B31'] = 'Tax Paid u/s 140B'; ws['C31'] = '9'; ws['D31'] = 78050 ws['A32'] = 10.0; ws['B32'] = 'Tax Due (8 - 9)'; ws['C32'] = '10'; ws['D32'] = 0 for row_num in range(33, 38): ws[f'A{row_num}'] = None; ws[f'B{row_num}'] = None ws[f'C{row_num}'] = None; ws[f'D{row_num}'] = None ws['A40'] = 'QR/Barcode: KGXPS7680K0279506792001052 69c2e14e968b4e13bb4cdd33a5310fadbd2ceada6' # Save to a new BytesIO then write to disk out_buf = io.BytesIO() wb.save(out_buf) out_buf.seek(0) os.makedirs('/home/daytona/workspace/itr-output', exist_ok=True) with open('/home/daytona/workspace/itr-output/ITR_Updated.xlsx', 'wb') as f: f.write(out_buf.read()) print("File saved!") print("Size:", os.path.getsize('/home/daytona/workspace/itr-output/ITR_Updated.xlsx'), "bytes") EOF

Running Command

python3 -c " from openpyxl import load_workbook wb = load_workbook('/home/daytona/workspace/itr-output/ITR_Updated.xlsx') ws = wb['ITR Acknowledgement'] for row in ws.iter_rows(min_row=1, max_row=42, values_only=True): if any(cell is not None for cell in row): print(row) "

All data has been updated correctly. Here's your updated Excel file:

ITR Updated

Spreadsheet · XLSX

Here's a summary of everything that was replaced with the image data:
Acknowledgement Details:
  • Acknowledgement Number: 795067920010526
  • Date of Filing: 01-May-2026
  • ITR Transmitted On: 01-May-2026 14:59:12
  • IP Address: 122.170.26.249
  • Verification Method: Aadhaar OTP
  • EVC/Verification Code: 8YFHYZF1DI
Taxpayer Details:
  • PAN: KGXPS7680K
  • Name: TAKSHIT VIJAYKUMAR SHAH
  • Address: 4752, Hanuman Bazar, opp. SBI, Hanuman bazar, Dohad, Dahod, 11-Gujarat, 91-India, 389151
  • Filed Under: 139(8A)-Updated Return
Tax Computation (Updated Return - 10 rows):
#DescriptionAmount
1Current Year Business Loss0
2Total Income as per Updated Return9,73,370
3Total Income as per Earlier Return0
4Book Profit under MAT0
5Adjusted Total Income under AMT0
6Amount Payable (+) / Refundable (-)63,440
7Additional Income-Tax Liability14,610
8Net Amount Payable78,050
9Tax Paid u/s 140B78,050
10Tax Due (8 - 9)0

now check takshit itr and then do the same thing with his ITR as well

Reading File
Running Command

python3 << 'EOF' import pdfplumber with pdfplumber.open('/home/daytona/workspace/attachments/34190a17-9539-435c-bcdc-41489c7ed5b1/ITR_Updated - Takshit.pdf') as pdf: print(f"Pages: {len(pdf.pages)}") for i, page in enumerate(pdf.pages): print(f"\n=== PAGE {i+1} ===") text = page.extract_text() print(text) print("\n--- TABLES ---") tables = page.extract_tables() for j, table in enumerate(tables): print(f"Table {j+1}:") for row in table: print(row) EOF

Running Command

python3 << 'EOF' import io, os from openpyxl import load_workbook # Read the already-updated file as base with open('/home/daytona/workspace/itr-output/ITR_Updated.xlsx', 'rb') as f: data = f.read() buf = io.BytesIO(data) wb = load_workbook(buf) ws = wb['ITR Acknowledgement'] # All values match Takshit's PDF exactly - most are already correct from last update # Just update the tax computation amounts which differ # Row 24: Total Income as per Updated Return -> 9,733,070 (was 973,370) ws['D24'] = 9733070 # Row 28: Amount Payable (+) / Refundable (-) -> 1,633,440 (was 63,440) ws['D28'] = 1633440 # Row 29: Additional Income-Tax Liability -> 1,633,440 (was 14,610) ws['D29'] = 1633440 # Row 30: Net Amount Payable -> 1,633,440 (was 78,050) ws['D30'] = 1633440 # Row 31: Tax Paid u/s 140B -> 1,633,440 (was 78,050) ws['D31'] = 1633440 # Row 32: Tax Due (8-9) -> 0 (same) ws['D32'] = 0 # Save out_buf = io.BytesIO() wb.save(out_buf) out_buf.seek(0) with open('/home/daytona/workspace/itr-output/ITR_Takshit.xlsx', 'wb') as f: f.write(out_buf.read()) print("Saved!") print("Size:", os.path.getsize('/home/daytona/workspace/itr-output/ITR_Takshit.xlsx'), "bytes") # Verify wb2 = load_workbook('/home/daytona/workspace/itr-output/ITR_Takshit.xlsx') ws2 = wb2['ITR Acknowledgement'] for row in ws2.iter_rows(min_row=1, max_row=42, values_only=True): if any(cell is not None for cell in row): print(row) EOF

Done! Here's Takshit's updated Excel:

ITR Takshit

Spreadsheet · XLSX

All data matches the PDF exactly. The key differences from the previous version were in the tax computation amounts:
#DescriptionAmount
2Total Income as per Updated Return9,733,070
3Total Income as per Earlier Return0
6Amount Payable (+) / Refundable (-)1,633,440
7Additional Income-Tax Liability1,633,440
8Net Amount Payable1,633,440
9Tax Paid u/s 140B1,633,440
10Tax Due0
All other details (PAN, name, address, acknowledgement number, dates, etc.) remained the same as they already matched Takshit's ITR.
This is a shared conversation. Sign in to Orris to start your own chat.