#java #csv
#java #csv
Вопрос:
Здесь мне нужно получить значения из таблицы вместо ручных значений, таких как отображаемое имя, возраст. И мне не нужно генерировать csv-файл по местоположению. Вместо этого он должен показать мне всплывающее окно, чтобы я мог загрузить файл csv. Как этого добиться?
До сих пор я пытался экспортировать данные в csv с помощью java. Я использовал некоторые ручные значения, такие как отображаемое имя, возраст. Но мне нужны значения, которые нужно получить из таблицы. Например
<table>
<td>
--datas--
</td>
</table>
Код Java:
import java.io.FileWriter;
import java.io.IOException;
public class test
{
public static void main(String [] args)
{
generateCsvFile("D:/test.csv");
}
private static void generateCsvFile(String sFileName)
{
try
{
FileWriter writer = new FileWriter(sFileName);
writer.append("DisplayName");
writer.append(',');
writer.append("Age");
writer.append('n');
writer.append("Dinesh");
writer.append(',');
writer.append("23");
writer.append('n');
writer.append("Kumar");
writer.append(',');
writer.append("29");
writer.append('n');
//generate whatever data you want
writer.flush();
writer.close();
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
Комментарии:
1. Вы уже сделали что-нибудь из этого самостоятельно? Что именно не работает?
Ответ №1:
Предположим, у вас есть страница jsp с таблицей. При отправке страницы jsp вы можете сформировать разделенную запятыми строку табличного значения из javascript, прочитав таблицу.
например
//gets table
var table= document.getElementById('table1');
//gets rows of table
var rowLen = table.rows.length;
//loops through rows
for (i = 0; i < rowLen; i ){
var oCells = table.rows.item(i).cells;
var cellLen = oCells.length;
for(var j = 0; j < cellLen; j ){
/* get your cell info here */
/* var cellVal = oCells.item(j).innerHTML; */
}
}
и как только у вас будет строка значений, разделенных запятыми, вы можете передать ее действию, обрабатывающему отправленный запрос.
Ответ №2:
Я предполагаю, что вы генерируете свою таблицу динамически и используете HttpSession, вы можете установить таблицу в сеансе следующим образом:
HttpSession.setAttribute("Data", ArrayList<Object> data);
Затем получите таблицу оттуда при генерации:
ArrayList<Object> data = this.context.getSession().getAttribute("Data");
Ответ №3:
Простое решение:
-
Используйте регулярное выражение для извлечения только внутренней части таблицы (между
<table></table>
тегами) -
Используйте регулярное выражение, чтобы удалить все новые строки между
<tr></tr>
и сами эти теги (строки) -
Используйте регулярное выражение для замены «
</td><td>
» на «,» -
Используйте регулярное выражение для удаления оставшихся тегов