

Excel VBA代わりにPythonを使おうと思っています。  
pythonソース上の変数に保存された、フォルダパスを意味する文字列をエクセルのセルに書こうとしたとき、エスケープシーケンス（￥マーク）はどう扱ったらよいでしょうか？

【説明用ソース（実物をかなり簡略化しています）】  
test = 'C:\\\test'

[code]

    wb = xlw.Book(myExcelBook)
    sheet_pyLog = wb.sheets['sheets1']
    sheet_pyLog.cells(1, 1).value = test　・・・・・①
    sheet_pyLog.cells(2, 1).value = repr(test)　・・②
    
[/code]

とした場合、エクセルのセルの中には、それぞれ

  1. C:\\\test
  2. C:\\\\\\\test

という表示になってしまいます。私としては `C:\test` と表示されるようにしたいのですが、どうしたらよいのでしょうか？  
testは記述の通りという条件でお考え下さい。（ `r'C:\test'` は使わない）

**環境**  
Python 3.10.9  
conda 23.1.0  
xlwings 0.29.1  
PyCharm 2023.1 (Community Edition)

よろしくお願いいたします。


CC BY-SA 4.0
2023-04-18T06:56:11.347
94559
2023-04-18T10:59:27.847
2023-04-18T07:31:00.790
3060
43160
question
python python3 excel
Python から Excel (xlwings) に￥記号を含む文字列を記入するには


何かPython関連またはExcelの版数が何処か古いか、確認方法が違っているのではありませんか？

あるいは`test = 'C:\\test'`の定義・設定処理と、`sheet_pyLog.cells(1, 1).value =
test`のExcelのセルへの代入の間に、バックスラッシュ文字を更にエスケープ処理している何かが存在しているのかもしれません。質問を簡略化するために削除した処理の中にそうしたものが無いか確認してみてください。

以下の環境で `①` のセルは `C:\test`, `②` のセルは `'C:\\test'` と表示されます。

[code]

    Package    Version
    ---------- -------
    Python     3.10.11
    pip        23.1
    pywin32    306
    setuptools 67.6.1
    wheel      0.40.0
    xlwings    0.30.4
    
[/code]

[code]

    Microsoft® Excel® for Microsoft 365 MSO (バージョン 2303 ビルド 16.0.16227.20202) 64 ビット
    
[/code]

* * *

以下のスクリプトを実行して：

[code]

    import xlwings as xw
    wb = xw.Book()
    
    test = 'C:\\test'
    
    sheet = wb.sheets['Sheet1']
    sheet.cells(1, 1).value = test
    sheet.cells(2, 1).value = repr(test)
    
    wb.save('FileName.xlsx')
    xl = xw.apps.active
    xl.quit()
    
[/code]

出来上がった`FileName.xlsx`をExcelで開いて`A1`と`A2`のセルを確認しています。

* * *

そして試行錯誤の一環だと思われますが、何かを評価？して代入するのに[repr()](https://docs.python.org/ja/3.10/library/functions.html#repr)は通常使わないのでは？  
この辺の記事に違いや使い分け方が書いてあります。  
[Pythonのstr( )とrepr( )の使い分け](https://gammasoft.jp/blog/use-diffence-str-and-
repr-python/)  
[【Python】repr 関数の使い方と実行結果](https://srbrnote.work/archives/5975)  
[【Python】__str__と__repr__の使い方](https://yumarublog.com/python/str-repr/)  
[Python : __str__() と __repr__() は、オブジェクトを文字列で表現する](https://commte.net/7360)


CC BY-SA 4.0
2023-04-18T10:44:56.537
94562
2023-04-18T10:59:27.847
2023-04-18T10:59:27.847
26370
26370
94559
answer