swerg написал: Можете привести при мер, что должно в файле содержаться? не понятно
t={{1,2,3,4},{5,6,7,8},{9,10,11,12}} Вид в файле: 1 2 3 4 5 6 7 8 9 10 11 12 Ну и нулевые значения, чтоб тоже записывались либо как nil, либо "пустое место".
t={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
local f = io.open("myfile.log", "w+");
for _,line in ipairs(t) do
for _,item in ipairs(line) do
f:write(tostring(item), ' ');
end
f:write('\n');
end
f:close();
Вячеслав написал: local f = io.open("myfile.log", "w+"); for _,line in ipairs(t) do for _,item in ipairs(line) do f:write(tostring(item), ' '); end f:write('\n'); end f:close();
Спасибо! Все именно так, как надо. Но есть одно "НО". Если мы имеем массив вида: t={{1,2,3,4}, {5, nil, nil, 6}}, то во вторую строку вписывается только первое число. Либо, если во второй строке массива есть только 4-ый элемент, то строка остается пустой. Получается, что после значения nil все последующие значения "затираются". А моя таблица подразумевает наличие nil значений.
для этого Вам надо ознакомиться с форматом файлов Excel и написать программу. -------------------------------------------- все в этом мире возможно, вопрос лишь в том, сколько на это надо .... и есть ли у Вас столько.
Игорь Князьков, Не рекомендую использовать nil, однако, если кол-во элементов в каждой из строк фиксировано, то это возможно:
Код
t={{1,2,3,4},{5,nil,nil,8},{9,10,11,12}};
columns = 4;
rows = 3;
local f = io.open("myfile.log", "w+");
local temp = {};
for y = 1,rows do
local line = t[y];
for x = 1,columns do
temp[x] = tostring(line[x]);
end
f:write(table.concat(temp, ' '), '\n');
end
f:close();
Для CSV замените ' ' в сткоке f:write... на ',' . Для обработки полей с запятыми в .csv вам нужно будет использовать более сложный алгоритм для их экранизации.
Вячеслав написал: Игорь Князьков , Не рекомендую использовать nil, однако, если кол-во элементов в каждой из строк фиксировано, то это возможно:
Код
t = {{ 1 , 2 , 3 , 4 },{ 5 , nil , nil , 8 },{ 9 , 10 , 11 , 12 }};
columns = 4 ;
rows = 3 ;
local f = io.open ( "myfile.log" , "w+" );
local temp = {};
for y = 1 ,rows do
local line = t[y];
for x = 1 ,columns do
temp[x] = tostring(line[x]);
end
f:write( table.concat (temp, ' ' ), '\n' );
end
f:close();
Для CSV замените ' ' в сткоке f:write... на ',' . Для обработки полей с запятыми в .csv вам нужно будет использовать более сложный алгоритм для их экранизации.