2017-02-06 3 views
0

Я сгенерировал файл Excel в своем приложении в xlsx формате. К сожалению, если я использую английское имя функции, и мой Excel не установлен на английский, тогда Excel идентифицирует его как неправильное имя функции. Симилярной ситуации не бывает в xls формате.Название формулы Excel на разных языках в формате xlsx

Можно ли избежать этой проблемы?

Конфигурация самого Excel не является приемлемым решением, так как клиент не должен принудительно вносить изменения в свою среду.

Заранее спасибо за любую помощь

+0

Ваше утверждение неверно. Office Open XML хранит формулы Excel всегда в обозначениях en_us, никогда в других обозначениях языка. Изменение в локальных обозначениях происходит только в графическом интерфейсе Excel. Но есть разница между содержимым ячейки формулы и содержимым ячейки строки. Формула ** не ** просто строка, начинающаяся с «=». –

+0

@AxelRichter Благодарим за информацию. Я использую внешнюю библиотеку для генерации файлов excel, и я не уверен, возможно ли различать содержимое ячейки формулы и содержимое ячейки строки. Можно ли явно проинформировать Excel о том, что это формула, которая должна быть обработана или она находится на уровне кодирования файла (некоторые метатеги), которые нельзя изменить с gui. – kadiii

+0

Это зависит от внешней библиотеки, которую вы используете. В Office Open XML (формат файлов * .xlsx) XML для ячейки строки выглядит следующим образом: ''. Там 't =" s "' означает строку типа, а значение 49 относится к позиции 49 в таблице общих строк. Элемент формулы выглядит следующим образом: ' COUNTIF ($ B8: $ AF8," Pr ")'. Как вы видите, существует специальный тег элемента 'f' для формул, а значение 5 - последний вычисленный результат. –

ответ

0

Excel имеет свой собственный способ для перевода формул с любого языка на английский. Вы не должны позаботиться об этом, это все хорошо. Таким образом, файл в испанском Excel можно прочитать во французском Excel без дальнейших настроек.

Например, см. Немецкую формулу «SUMME» в F1. Он переводится как «SUM», когда вы спрашиваете об этом -> см. Прямое окно справа.

enter image description here

Единственное, что вы должны избегать, это формула, как этот: activecell.FormulaR1C1Local= "=SUMME(Z(8)S(-2):Z(9)S(-2))", потому что он принимает локальную формулу в виде строки и Excel не может найти способ перевести «Самме» на «SUM».