win32com Powerpoint无法处理名称中的空格

时间:2018-03-08 17:41:06

标签: python win32com

我的项目需要通过python以只读方式打开各种Microsoft Office文档。虽然win32com的Excel和Word功能从未出现过包含空格的文档的问题,但win32com PowerPoint不允许这样做。

df.have %>%
  as_tbl_time(index = v1) %>%
  collapse_by("hourly", side="start", clean=TRUE) %>%
  group_by(v1) %>%
  mutate(sumv2_byhour = sum(v2, na.rm=TRUE),
         countv1_byhour = n()) %>%
  distinct(v1, .keep_all = TRUE) %>%
  ungroup() %>%
  padr::pad("hour") %>%
  padr::fill_by_value(value = 0)
#> # A tibble: 33 x 4
#>    v1                     v2 sumv2_byhour countv1_byhour
#>    <dttm>              <dbl>        <dbl>          <dbl>
#>  1 2018-01-01 01:00:00    1.           1.             2.
#>  2 2018-01-01 02:00:00    1.           1.             1.
#>  3 2018-01-01 03:00:00    1.           2.             3.
#>  4 2018-01-01 04:00:00    0.           0.             0.
#>  5 2018-01-01 05:00:00    1.           1.             1.
#>  6 2018-01-01 06:00:00    1.           2.             2.
#>  7 2018-01-01 07:00:00    0.           0.             0.
#>  8 2018-01-01 08:00:00    0.           0.             0.
#>  9 2018-01-01 09:00:00    1.           1.             1.
#> 10 2018-01-01 10:00:00    0.           0.             0.
#> # ... with 23 more rows

产生错误:

from win32com.client import Dispatch
Application = Dispatch("PowerPoint.Application")
Application.Visible = True
Test = Application.Presentations.Open("C:/Users/MYUSERNAME/Desktop/The Test.pptx", ReadOnly=True)

我目前的解决方案是重命名文件,用下划线替换空格,然后在打开文件后重命名。但是,这需要打开文档无法打开。

com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2147024894), None)

有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

使用反斜杠应该有效:

$('.fetchedData').on('click', function(){
    console.log($(this).text());
})

答案 1 :(得分:0)

我猜测如果你的字符串前面没有&#34; r&#34;就会出现问题。 &#34; r&#34;将告诉python将给定的字符串视为原始字符串。

如果我尝试这个,它对我有用:

from win32com.client import Dispatch
Application = Dispatch("PowerPoint.Application")
Application.Visible = True
Test = Application.Presentations.Open(r"C:\UsersMYUSERNAME\Desktop\The Test.pptx", ReadOnly=True)