Как вставить данные Excel в текст с фиксированной шириной?

23369
einpoklum

Если я копирую данные в Excel и вставляю их в текстовый файл, я получаю вкладки между ячейками. Это не хорошо, я хочу пробелы - и я хочу, чтобы столбцы были выровнены. Как я могу достичь этого без особых усилий (очевидно, я не хочу запускать регулярные выражения вручную и т. Д.)

Использование «Сохранить как» (как в этом вопросе ) не является для меня решением, мне нужно скопировать и вставить.

11
У меня есть возможное решение, которое включало бы вставку из одной рабочей книги в другую рабочую книгу (затем из другой рабочей книги в то место, куда вы вставляете. Это соответствует вашему рабочему процессу? Pynner 11 лет назад 0
@Pynner: Ну, это подходит лучше, чем вообще никакого решения, так что да, продолжай. einpoklum 11 лет назад 0

3 ответа на вопрос

11
Pynner

This is certainly not simple to explain... but after it is setup it will work with minimal effort. Also this is a slight variation on what @pnuts has outlined

I suggest using a template spreadsheet that you can copy-paste to. the template i have created has 3 tabs that look as follows.

tabs

  • Data tab is where the data is pasted
  • Length is going to do some math to determine the longest column
  • Space insert is going to insert the appropriate number of spaces (edit) you can copy from here and get the correct result

the length tab looks like

length

Row 1 has maximum characters of the column below is and contains the formula

=MAX(A2:A101)+1 

+1 creates the delimiter.

Row 2 through to n (which i have extended to 100 for this example) contain a formula to evaluate the length of each string

=LEN('Data tab'!A1) 

the space insert tab looks like

space insert

Each cell contains a cell to evaluate the length of itself in comparison with the max value (+ delimiter) and insert an appropriate number of spaces.

='Data tab'!A1&REPT(" ",length!A$1-length!A2) 

Note the $ which locks Row 1 if you copy and paste the formula

(edit) you can copy from the space insert tab.

notepad

Гениально надуманный! einpoklum 11 лет назад 1
Но ... зачем мне последний лист, правда? Я могу скопировать и вставить с третьего листа. Кроме того, я не хочу использовать какие-либо длинные формулы, реплицированные для каждого столбца. einpoklum 11 лет назад 0
Совершенно верно ... последняя вкладка не требуется ... Я предполагал, что в ячейки будут вставлены дополнительные символы. Я обновлю свой ответ, чтобы исправить это Pynner 11 лет назад 0
Отличный ответ, большое спасибо. Лично некоторые из моих столбцов вышли очень длинными, поэтому я добавил страницу с "= LEFT ('пробел вставка'! A1, $ K $ 2) & IF (длина! A2> $ K $ 2," ... | ", «|») «где $ K $ 2 установлено на соответствующее значение (максимум самого важного столбца). Это хорошо работает для описаний и т. Д., Следующий шаг переноса: p chrispepper1989 8 лет назад 0
3
chuff

Самым простым решением было бы объединить ваши числовые данные в «комментированную» строку, которая корректно вставляется в текстовый файл. Создайте формулу Excel для одной строки, а затем скопируйте ее для всех строк на рабочем листе, а затем скопируйте столбец формулы и вставьте его в текстовый файл. Например,

Данные

Ячейка А1: 247

Ячейка B1: 19

Ячейка С1: 1437

Формула в ячейке D1

= A1 & " "& B1 &"," & С1

Текст-вставляемый результат

247,19,1437

Есть другой подход, который не опирается на формулы.

  • Во-первых, убедитесь, что все столбцы данных имеют одинаковую ширину.
  • Затем вставьте еще один столбец между каждой парой столбцов данных шириной 2.
  • Введите одну запятую в каждом из вставленных столбцов, копируя ее по длине данных.
  • Наконец, сохраните лист в формате отформатированного текста (с пробелами) (* .prn).

Преимущество этой альтернативы в том, что она сохраняет форматирование ваших данных. Если вы хотите отформатировать данные запятыми или просто указать один десятичный знак, ваше форматирование будет сохранено в файле prn.

Можете ли вы сделать так, чтобы (i) он был разделен пробелами и (ii) выровнен, как запрос OP, и (я бы предположил) (iii) с пробелами, уже находящимися в некоторых ячейках (т. Е. Текстовые "" слова)? pnuts 11 лет назад 0
например, с {= MAX (LEN (A1: C1)) + 1}, скажем, 'E1' и `= REPT (" ", E1-LEN (A1)) & A1 & REPT (" ", E1-LEN (B1)) & B1 & REPT ( "", E1-LEN (C1)) и C1` в 'D1' (предполагается, что в текстовом документе используется непропорциональный шрифт). Сохранить как и т. Д. Может быть проще! pnuts 11 лет назад 0
pnuts предложил mprovement именно так. Я обновил свой ответ с другой альтернативой, которая использует Сохранить как. chuff 11 лет назад 1
Таким образом, как я уже сказал в вопросе, сохранение как не вариант. Будет ли решение REPT работать с копированием? Кроме того, я пока не принимаю, потому что хотел бы что-то менее громоздкое. einpoklum 11 лет назад 0
0
Michael

You can copy your data in Word and then use Find and Replace (Ctrl+H) to replace the tabs with spaces.

  1. Open and paste data in Word
  2. Press Ctrl+H
  3. More >>
  4. Special
  5. White Space
  6. Put a space in the replace with:
  7. Replace all
Это не будет делать то, что я просил, извините - ширина столбцов будет отличаться. einpoklum 9 лет назад 0

Похожие вопросы