2

Это не имеет никакого смысла. Я могу сделать это в Excel 2010 в Windows, но не в Excel 2011 в OS X.

Рабочая книга, которую я использовал: http://cl.ly/Ewfe

Screenie:

1 ответ1

1

Я сделал bash-скрипт для OS X на тот случай, если кто-то из вас захочет сделать это:

Вы используете это так:

backward_forecast workbook.xlsx forecast_number

Автор сценария:

#!/bin/bash
if [[ $# -lt 2 ]]
then
    echo "Usage: backward_forecast workbook.xlsx forecast_number"
    exit 1
fi
extension="${1##*.}"
if [[ "$extension" != xlsx ]]
then
    echo "Unknown extension: $extension"
    exit 2
fi

OLD_IFS="$IFS"
IFS=$'\n'
charts=( $(zipinfo -1 "$1" 2> /dev/null | grep '^xl/charts/.*\.xml') )
IFS="$OLD_IFS"

chart_files="${#charts[@]}"
case "$chart_files" in
    0)
        echo "No charts found in $1."
        exit 3
    ;;
    1)
        process_files=( "${charts[0]}" )
    ;;
    *)
        options=""
        i=0
        for c in "${charts[@]}"
        do
            i=$(($i+1))
            tmp="${c##*/}"
            options+="$i) ${tmp/.xml}"$'\n'
        done
        while true
        do
            echo "Multiple chart files found."
            echo "Please select the chart you want to change:"
            echo
            echo "$options"
            echo
            read -p "Chart number (* = all): " input
            if [[ "$input" == "*" ]]
            then
                process_files=( "${charts[@]}" )
                break
            elif [[ "$input" -gt 0 && "$input" -le "$chart_files" ]]
            then
                input=$(($input-1))
                process_files=( "${charts[$input]}" )
                break
            else
                clear
                echo "Bad selection number!"
                echo
            fi
        done
    ;;
esac

cd /tmp
mkdir -p xl/charts
for f in "${process_files[@]}"
do
    unzip -p "$1" "$f" | sed 's/<c:backward val="[^"]*"\/>/<c:backward val="'"$2"'"\/>/' > "$f"
    zip -q "$1" "$f"
    rm -f "$f"
done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .