У меня есть 635 текстовых файлов в одной папке. Я хочу прочитать эти данные в Excel. Это не такая простая задача, как кажется на первый взгляд. Я работал над экспортом файлов в Excel (с помощью stackoverflow :)) и теперь, когда у меня все получилось, я хочу закончить свое приложение. Вот параметры:
В моей выходной электронной таблице Excel будет 637 столбцов, и данные будут вводиться начиная с третьего столбца. Как вы можете догадаться, каждый столбец (3-639) будет представлять одну из 635 подпапок.
В электронной таблице 73902 строки, и данные будут записываться начиная с 3-й строки.
Теперь записываемые данные поступают из 635 файлов. Каждый файл имеет 2 столбца. Например, чтобы заполнить столбец 5 (который будет соответствовать 5-2 = 3-й файл из 635 ) в листе Excel, перейдем к файлу 3rd и получим значения из там. Первый столбец в этом файле определяет, какие ячейки должны быть заполнены в листе Excel. Значения, которые необходимо заполнить, взяты из второго столбца этого файла (извините, если столбец слов запутался). Нам нужно заполнить 73900 строк для каждого столбца на листе (каждый столбец - 1 файл). А затем повторите это для 635 столбцов.
Если третий файл выглядит так:
5849 66883
395 4492863
681 1835871
817 4039961
835 3246671
868 4041156
889 1891481
1305 4467688
1317 175306
1361 3252611
2101 174589
4364 4053046
4897 4466547
4991 3879532
5327 3992891
5397 175328
6067 3881675
6075 176782
6906 2358727
7497 1838021
затем мы будем заполнять строки 5849, 385, 681,817
и так далее ... Мы заполняем эти ячейки соответствующими значениями из второго столбца в файле. Поэтому в 5-м столбце таблицы Excel ячейки 5849, 385, 681,817...
будут заполнены значениями 66883,4492863,1835871,4039961...
Я прилагаю изображение листа Excel, чтобы прояснить ситуацию
Пока у меня есть код Visual Basic для импорта текстовых файлов в Excel, но на самом деле я не обрабатываю информацию, рассмотренную выше. У меня также есть небольшой скрипт MATLAB, который делает то же самое (это не полностью функционирует) для записи данных в Excel. Я вставляю оба ниже.
Sub ReadFilesIntoActiveSheet()
Dim fso As FileSystemObject
Dim folder As folder
Dim file As file
Dim FileText As TextStream
Dim TextLine As String
Dim Items() As String
Dim i As Long
Dim cl As Range
' Get a FileSystem object
Set fso = New FileSystemObject
' get the directory you want
Set folder = fso.GetFolder("D:\275_25bp")
' set the starting point to write the data to
Set cl = ActiveSheet.Cells(1, 1)
' Loop thru all files in the folder
For Each file In folder.Files
' Open the file
Set FileText = file.OpenAsTextStream(ForReading)
' Read the file one line at a time
Do While Not FileText.AtEndOfStream
TextLine = FileText.ReadLine
' Parse the line into | delimited pieces
Items = Split(TextLine, " ")
' Put data on one row in active sheet
For i = 0 To UBound(Items)
cl.Offset(0, i).Value = Items(i)
Next
' Move to next row
Set cl = cl.Offset(1, 0)
Loop
' Clean up
FileText.Close
Next file
Set FileText = Nothing
Set file = Nothing
Set folder = Nothing
Set fso = Nothing
End Sub
####################### MATLAB SCRIPT ################### #############
dirname = uigetdir;#
Files = dir(fullfile(dirname,'*.txt'))
for i=1:numel(Files)
filename = fullfile(dirname,Files(k).name);
[col1,col2] = textread( filename, '%d%d' )
%pos1 = strcat('A',num2str(i));
%pos2 = strcat('B',num2str(i));
xlswrite('sample_output',col1,'Sheet1','A1:CI1')
xlswrite('sample_output',col2,'Sheet1','A2:CI2')
end
Нет общего шаблона именования для файлов-NAMES, за исключением того, что они являются уникальными именами. Папка содержит их в алфавитном порядке, поэтому файл 1 (начиная с A) и файл 635 (начнется с Z). Примеры имен файлов:
Acidothermus_cellulolyticus_11B-list.txt
Frankia_alni_ACN14a-list.txt
...
Zymomonas_mobilis_ZM4-list.txt
Неважно, какой язык используется, но желательно что-то в UNIX (я знаю, что это не язык: P) или MATLAB (как я делал этот проект на этих двух языках).
Я очень признателен за помощь в этом. Пожалуйста, позвольте мне, если вам нужны какие-либо разъяснения о том, что необходимо сделать. Спасибо!