Как экспортировать содержимое таблицы в CSV с помощью Java?

#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:

Простое решение:

  1. Используйте регулярное выражение для извлечения только внутренней части таблицы (между <table></table> тегами)

  2. Используйте регулярное выражение, чтобы удалить все новые строки между <tr></tr> и сами эти теги (строки)

  3. Используйте регулярное выражение для замены « </td><td> » на «,»

  4. Используйте регулярное выражение для удаления оставшихся тегов