Vì vậy, bạn muốn chèn một số ô vào SS trong Excel bằng Python. & NBSP; Dễ như ăn bánh!
Bước 1] Yêu cầu
Để làm điều này, bạn phải cài đặt mô -đun Win32 của Python. & NBSP; Bạn có thể chọn mô -đun này ở đây: //python.net/crew/skippy/win32/doad.html
//python.net/crew/skippy/win32/Downloads.html
Bạn cũng phải xây dựng các hằng số Win32 cho Excel. & NBSP; Hướng dẫn về cách thực hiện điều này có thể được tìm thấy ở đây: Xây dựng hằng số Win32com
Building win32com Constants
Bước 2] Xây dựng tập lệnh với một đối tượng Excel
Bây giờ kết hợp một tập lệnh với một đối tượng Excel trong đó, tạo ra một đối tượng sổ làm việc và sau đó từ đối tượng sổ làm việc tạo ra một đối tượng bảng tính. & NBSP; Sau đó, từ đối tượng bảng tính tạo đối tượng phạm vi của bạn. Thí dụ:
# import the win32 module
import win32com.client
import win32com.client
# create an xl object
xl = win32com.client.Dispatch["Excel.Application"]
# create a workbook obje
ct
# Write data in expenses form
expform_wb = xl.Workbooks.Open[expform_path, Editable=True]
expform_ws = expform_wb.Worksheets['Expense Form']
last_row_ef = expense_items + 15
expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
expform_ws.Range['Casecode'].Value = case_code
expform_ws.Range['D6'].Value = name
expform_ws.Range['D7'].Value = last_name
expform_ws.Range['D8'].Value = datetime.date.today[].strftime["%d/%m/%Y"]
expform_ws.Range['B16:B' + str[last_row_ef]].Value = date
expform_ws.Range['D16:D' + str[last_row_ef]].Value = descr
0# Write data in expenses form
expform_wb = xl.Workbooks.Open[expform_path, Editable=True]
expform_ws = expform_wb.Worksheets['Expense Form']
last_row_ef = expense_items + 15
expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
expform_ws.Range['Casecode'].Value = case_code
expform_ws.Range['D6'].Value = name
expform_ws.Range['D7'].Value = last_name
expform_ws.Range['D8'].Value = datetime.date.today[].strftime["%d/%m/%Y"]
expform_ws.Range['B16:B' + str[last_row_ef]].Value = date
expform_ws.Range['D16:D' + str[last_row_ef]].Value = descr
1# Write data in expenses form
expform_wb = xl.Workbooks.Open[expform_path, Editable=True]
expform_ws = expform_wb.Worksheets['Expense Form']
last_row_ef = expense_items + 15
expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
expform_ws.Range['Casecode'].Value = case_code
expform_ws.Range['D6'].Value = name
expform_ws.Range['D7'].Value = last_name
expform_ws.Range['D8'].Value = datetime.date.today[].strftime["%d/%m/%Y"]
expform_ws.Range['B16:B' + str[last_row_ef]].Value = date
expform_ws.Range['D16:D' + str[last_row_ef]].Value = descr
2# Write data in expenses form
expform_wb = xl.Workbooks.Open[expform_path, Editable=True]
expform_ws = expform_wb.Worksheets['Expense Form']
last_row_ef = expense_items + 15
expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
expform_ws.Range['Casecode'].Value = case_code
expform_ws.Range['D6'].Value = name
expform_ws.Range['D7'].Value = last_name
expform_ws.Range['D8'].Value = datetime.date.today[].strftime["%d/%m/%Y"]
expform_ws.Range['B16:B' + str[last_row_ef]].Value = date
expform_ws.Range['D16:D' + str[last_row_ef]].Value = descr
3# Write data in expenses form
expform_wb = xl.Workbooks.Open[expform_path, Editable=True]
expform_ws = expform_wb.Worksheets['Expense Form']
last_row_ef = expense_items + 15
expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
expform_ws.Range['Casecode'].Value = case_code
expform_ws.Range['D6'].Value = name
expform_ws.Range['D7'].Value = last_name
expform_ws.Range['D8'].Value = datetime.date.today[].strftime["%d/%m/%Y"]
expform_ws.Range['B16:B' + str[last_row_ef]].Value = date
expform_ws.Range['D16:D' + str[last_row_ef]].Value = descr
4xl = win32com.client.Dispatch["Excel.Application"]
# create a workbook obje
ct
# Write data in expenses form
expform_wb = xl.Workbooks.Open[expform_path, Editable=True]
expform_ws = expform_wb.Worksheets['Expense Form']
last_row_ef = expense_items + 15
expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
expform_ws.Range['Casecode'].Value = case_code
expform_ws.Range['D6'].Value = name
expform_ws.Range['D7'].Value = last_name
expform_ws.Range['D8'].Value = datetime.date.today[].strftime["%d/%m/%Y"]
expform_ws.Range['B16:B' + str[last_row_ef]].Value = date
expform_ws.Range['D16:D' + str[last_row_ef]].Value = descr
0# Write data in expenses form
expform_wb = xl.Workbooks.Open[expform_path, Editable=True]
expform_ws = expform_wb.Worksheets['Expense Form']
last_row_ef = expense_items + 15
expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
expform_ws.Range['Casecode'].Value = case_code
expform_ws.Range['D6'].Value = name
expform_ws.Range['D7'].Value = last_name
expform_ws.Range['D8'].Value = datetime.date.today[].strftime["%d/%m/%Y"]
expform_ws.Range['B16:B' + str[last_row_ef]].Value = date
expform_ws.Range['D16:D' + str[last_row_ef]].Value = descr
1# Write data in expenses form
expform_wb = xl.Workbooks.Open[expform_path, Editable=True]
expform_ws = expform_wb.Worksheets['Expense Form']
last_row_ef = expense_items + 15
expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
expform_ws.Range['Casecode'].Value = case_code
expform_ws.Range['D6'].Value = name
expform_ws.Range['D7'].Value = last_name
expform_ws.Range['D8'].Value = datetime.date.today[].strftime["%d/%m/%Y"]
expform_ws.Range['B16:B' + str[last_row_ef]].Value = date
expform_ws.Range['D16:D' + str[last_row_ef]].Value = descr
2# Write data in expenses form
expform_wb = xl.Workbooks.Open[expform_path, Editable=True]
expform_ws = expform_wb.Worksheets['Expense Form']
last_row_ef = expense_items + 15
expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
expform_ws.Range['Casecode'].Value = case_code
expform_ws.Range['D6'].Value = name
expform_ws.Range['D7'].Value = last_name
expform_ws.Range['D8'].Value = datetime.date.today[].strftime["%d/%m/%Y"]
expform_ws.Range['B16:B' + str[last_row_ef]].Value = date
expform_ws.Range['D16:D' + str[last_row_ef]].Value = descr
3# Write data in expenses form
expform_wb = xl.Workbooks.Open[expform_path, Editable=True]
expform_ws = expform_wb.Worksheets['Expense Form']
last_row_ef = expense_items + 15
expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
expform_ws.Range['Casecode'].Value = case_code
expform_ws.Range['D6'].Value = name
expform_ws.Range['D7'].Value = last_name
expform_ws.Range['D8'].Value = datetime.date.today[].strftime["%d/%m/%Y"]
expform_ws.Range['B16:B' + str[last_row_ef]].Value = date
expform_ws.Range['D16:D' + str[last_row_ef]].Value = descr
4Bước 3] Bây giờ tạo hai đối tượng phạm vi.
Thêm các dòng sau vào tập lệnh của bạn. & NBSP; Các dòng được ghi nhận về những gì họ sẽ làm.
# Write data in expenses form
expform_wb = xl.Workbooks.Open[expform_path, Editable=True]
expform_ws = expform_wb.Worksheets['Expense Form']
last_row_ef = expense_items + 15
expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
expform_ws.Range['Casecode'].Value = case_code
expform_ws.Range['D6'].Value = name
expform_ws.Range['D7'].Value = last_name
expform_ws.Range['D8'].Value = datetime.date.today[].strftime["%d/%m/%Y"]
expform_ws.Range['B16:B' + str[last_row_ef]].Value = date
expform_ws.Range['D16:D' + str[last_row_ef]].Value = descr
5# Write data in expenses form
expform_wb = xl.Workbooks.Open[expform_path, Editable=True]
expform_ws = expform_wb.Worksheets['Expense Form']
last_row_ef = expense_items + 15
expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
expform_ws.Range['Casecode'].Value = case_code
expform_ws.Range['D6'].Value = name
expform_ws.Range['D7'].Value = last_name
expform_ws.Range['D8'].Value = datetime.date.today[].strftime["%d/%m/%Y"]
expform_ws.Range['B16:B' + str[last_row_ef]].Value = date
expform_ws.Range['D16:D' + str[last_row_ef]].Value = descr
6# Write data in expenses form
expform_wb = xl.Workbooks.Open[expform_path, Editable=True]
expform_ws = expform_wb.Worksheets['Expense Form']
last_row_ef = expense_items + 15
expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
expform_ws.Range['Casecode'].Value = case_code
expform_ws.Range['D6'].Value = name
expform_ws.Range['D7'].Value = last_name
expform_ws.Range['D8'].Value = datetime.date.today[].strftime["%d/%m/%Y"]
expform_ws.Range['B16:B' + str[last_row_ef]].Value = date
expform_ws.Range['D16:D' + str[last_row_ef]].Value = descr
7# Write data in expenses form
expform_wb = xl.Workbooks.Open[expform_path, Editable=True]
expform_ws = expform_wb.Worksheets['Expense Form']
last_row_ef = expense_items + 15
expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
expform_ws.Range['Casecode'].Value = case_code
expform_ws.Range['D6'].Value = name
expform_ws.Range['D7'].Value = last_name
expform_ws.Range['D8'].Value = datetime.date.today[].strftime["%d/%m/%Y"]
expform_ws.Range['B16:B' + str[last_row_ef]].Value = date
expform_ws.Range['D16:D' + str[last_row_ef]].Value = descr
8# Write data in expenses form
expform_wb = xl.Workbooks.Open[expform_path, Editable=True]
expform_ws = expform_wb.Worksheets['Expense Form']
last_row_ef = expense_items + 15
expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
expform_ws.Range['Casecode'].Value = case_code
expform_ws.Range['D6'].Value = name
expform_ws.Range['D7'].Value = last_name
expform_ws.Range['D8'].Value = datetime.date.today[].strftime["%d/%m/%Y"]
expform_ws.Range['B16:B' + str[last_row_ef]].Value = date
expform_ws.Range['D16:D' + str[last_row_ef]].Value = descr
9expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
0expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
1expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
2# Write data in expenses form
expform_wb = xl.Workbooks.Open[expform_path, Editable=True]
expform_ws = expform_wb.Worksheets['Expense Form']
last_row_ef = expense_items + 15
expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
expform_ws.Range['Casecode'].Value = case_code
expform_ws.Range['D6'].Value = name
expform_ws.Range['D7'].Value = last_name
expform_ws.Range['D8'].Value = datetime.date.today[].strftime["%d/%m/%Y"]
expform_ws.Range['B16:B' + str[last_row_ef]].Value = date
expform_ws.Range['D16:D' + str[last_row_ef]].Value = descr
6# Write data in expenses form
expform_wb = xl.Workbooks.Open[expform_path, Editable=True]
expform_ws = expform_wb.Worksheets['Expense Form']
last_row_ef = expense_items + 15
expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
expform_ws.Range['Casecode'].Value = case_code
expform_ws.Range['D6'].Value = name
expform_ws.Range['D7'].Value = last_name
expform_ws.Range['D8'].Value = datetime.date.today[].strftime["%d/%m/%Y"]
expform_ws.Range['B16:B' + str[last_row_ef]].Value = date
expform_ws.Range['D16:D' + str[last_row_ef]].Value = descr
7# Write data in expenses form
expform_wb = xl.Workbooks.Open[expform_path, Editable=True]
expform_ws = expform_wb.Worksheets['Expense Form']
last_row_ef = expense_items + 15
expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
expform_ws.Range['Casecode'].Value = case_code
expform_ws.Range['D6'].Value = name
expform_ws.Range['D7'].Value = last_name
expform_ws.Range['D8'].Value = datetime.date.today[].strftime["%d/%m/%Y"]
expform_ws.Range['B16:B' + str[last_row_ef]].Value = date
expform_ws.Range['D16:D' + str[last_row_ef]].Value = descr
8# Write data in expenses form
expform_wb = xl.Workbooks.Open[expform_path, Editable=True]
expform_ws = expform_wb.Worksheets['Expense Form']
last_row_ef = expense_items + 15
expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
expform_ws.Range['Casecode'].Value = case_code
expform_ws.Range['D6'].Value = name
expform_ws.Range['D7'].Value = last_name
expform_ws.Range['D8'].Value = datetime.date.today[].strftime["%d/%m/%Y"]
expform_ws.Range['B16:B' + str[last_row_ef]].Value = date
expform_ws.Range['D16:D' + str[last_row_ef]].Value = descr
9expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
0expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
1expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
2Bước 4] Bây giờ tạo hai đối tượng phạm vi.
Sẵn sàng cho nó? & NBSP; Bây giờ chúng tôi sẽ thực hiện chèn. & Nbsp; Giữ số lượng hơi thở của bạn vào ba và chèn dòng:
expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
3Chèn đang hoạt động trên cột được xác định bởi đối tượng phạm vi. & NBSP; Vì vậy, trong trường hợp này, đối tượng phạm vi mà chúng tôi gọi là chèn là cột B. & NBSP; Do đó, cột mới sẽ được chèn vào giữa các cột A và B. & NBSP; Có một thuộc tính gọi là xlshiftToright được cho là ảnh hưởng đến cách thay đổi xảy ra. & Nbsp; Tôi đã không thể làm cho nó hoạt động chính xác vì vậy tôi chỉ để lại mọi thứ như hiện tại. & NBSP; Nếu bạn muốn thử nghiệm thuộc tính này, bạn sẽ thêm nó như một đối số vào phương thức chèn [].xlShiftToRight which is suppose to influence which way the shifting happens. I was unable to get it to work correctly so I just left things as is. If you wish to experiment with this property you would add it as an argument to the Insert[] method.
Example:
expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
4expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
5expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
5Để chèn một hàng thay vì một cột, chỉ cần đặt phạm vi của bạn để chọn một hàng dữ liệu và sử dụng thuộc tính của các đối tượng phạm vi thay vì thuộc tính EntireColumn. & NBSP; Thí dụ:
expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
6expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
7expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
7Nếu điều này không hoạt động chính xác, bạn có thể thử nghiệm thuộc tính xlinsertshiftDirection để thực thi hướng bạn muốn thay đổi diễn ra. & NBSP; Một lần nữa tôi không thể có được mọi thứ để hành xử khác nhau bằng cách sử dụng đối số này.
Tôi có một câu hỏi rất cụ thể. Dòng:
expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
Trong mã dưới đây không hoạt động:
# Write data in expenses form
expform_wb = xl.Workbooks.Open[expform_path, Editable=True]
expform_ws = expform_wb.Worksheets['Expense Form']
last_row_ef = expense_items + 15
expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
expform_ws.Range['Casecode'].Value = case_code
expform_ws.Range['D6'].Value = name
expform_ws.Range['D7'].Value = last_name
expform_ws.Range['D8'].Value = datetime.date.today[].strftime["%d/%m/%Y"]
expform_ws.Range['B16:B' + str[last_row_ef]].Value = date
expform_ws.Range['D16:D' + str[last_row_ef]].Value = descr
Trong trường hợp điều này giúp: dòng được tô sáng trong Pycharm là "tuyên bố dường như không có tác dụng".
Bất cứ ai cũng có thể giúp phát hiện ra những gì tôi đang làm sai?
Thanks!
Đã hỏi ngày 17 tháng 3 năm 2019 lúc 12:48Mar 17, 2019 at 12:48
3
Trong dòng này
expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert
Bạn không thực sự gọi hàm, bạn chỉ nhận được "tham chiếu" vào nó, thêm [] để gọi nó
expform_ws.Range["Total"].Offset[-1, 0].EntireRow.Insert[]
Đã trả lời ngày 17 tháng 3 năm 2019 lúc 13:00Mar 17, 2019 at 13:00
NullmannullmanNullman
4.0892 Huy hiệu vàng14 Huy hiệu bạc 30 Huy hiệu Đồng2 gold badges14 silver badges30 bronze badges