我如何在Python中使用小写文件路径?

时间:2014-12-14 22:26:15

标签: python excel xlwings

我有一个宏,它接受应该是文件的单元格的值,然后使用xlwings和VBS脚本将其转换为csv文件。该宏被分配给一个按钮。

以下是一个示例函数:

import subprocess
from xlwings import Workbook, Range

def extract_excel_sheet_to_csv(filename, sheet_name, working_dir, csv_filename):
    wb = Workbook.caller()
    new_filename = os.path.join(working_dir, filename)

    cmd = ''.join(['cscript extract_excel_sheet_to_csv.vbs "',
                new_filename, '" "', sheet_name, '" "',
                working_dir, '" "', csv_filename, '"'])
    cmd = cmd.encode("utf8")

    subprocess.call(cmd)

filename = Range(sheet_arxikh, status_cell).value # Example data.xlsb
sheet_name = u"Αρχείο"
working_dir = os.path.dirname(wb.fullname)
csv_filename = "data.csv"

convert_file(filename, sheet_name, working_dir, csv_filename)

wb.fullname的含义如下:"c:\projects\buy_sell\data.xlsb",因此working_dir为"c:\projects\buy_sell\"。这会在使用以下VBS脚本的文件路径中产生问题。如果我使用r"c:\projects\buy_sell",它可以正常工作。

这是我使用的VBS脚本:

Set objFSO = CreateObject("Scripting.FileSystemObject")

src_file = Wscript.Arguments.Item(0)
sheet_name = Wscript.Arguments.Item(1)
dir_name = Wscript.Arguments.Item(2)
file_name = Wscript.Arguments.Item(3)

WScript.Echo src_file
WScript.Echo sheet_name
WScript.Echo dir_name + "\" +  file_name + ".csv"
REM WScript.Echo dir_name
REM WScript.Echo file_name

Dim objExcel
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = False

Dim objWorkbook
Set objWorkbook = objExcel.Workbooks.open(src_file)

objWorkbook.Sheets(sheet_name).Copy
objExcel.DisplayAlerts = False

objExcel.ActiveWorkbook.SaveAs dir_name + "\" +  file_name + ".csv", 6

objWorkbook.Close False
objExcel.Quit

0 个答案:

没有答案