Вы должны использовать decimal format
и отформатировать номер.
DecimalFormat formatter = new DecimalFormat("#,###,###");
String yourFormattedString = formatter.format(100000);
System.out.println("$" + yourFormattedString);
Результат будет
-> 1,000,000 for 1000000
-> 10,000 for 10000
-> 1,000 for 1000
Вот обновленная версия ответ Yuvai , который правильно обрабатывает поля, которые требуют заключения в кавычки (т.е. поля, которые содержат запятые в данных, двойные кавычки или охватывают несколько строк)
#!/usr/bin/env python3
from html.parser import HTMLParser
import sys
import re
class HTMLTableParser(HTMLParser):
def __init__(self, row_delim="\n", cell_delim=","):
HTMLParser.__init__(self)
self.despace_re = re.compile("\s+")
self.data_interrupt = False
self.first_row = True
self.first_cell = True
self.in_cell = False
self.row_delim = row_delim
self.cell_delim = cell_delim
self.quote_buffer = False
self.buffer = None
def handle_starttag(self, tag, attrs):
self.data_interrupt = True
if tag == "table":
self.first_row = True
self.first_cell = True
elif tag == "tr":
if not self.first_row:
sys.stdout.write(self.row_delim)
self.first_row = False
self.first_cell = True
self.data_interrupt = False
elif tag == "td" or tag == "th":
if not self.first_cell:
sys.stdout.write(self.cell_delim)
self.first_cell = False
self.data_interrupt = False
self.in_cell = True
elif tag == "br":
self.quote_buffer = True
self.buffer += self.row_delim
def handle_endtag(self, tag):
self.data_interrupt = True
if tag == "td" or tag == "th":
self.in_cell = False
if self.buffer != None:
# Quote if needed...
if self.quote_buffer or self.cell_delim in self.buffer or "\"" in self.buffer:
# Need to quote! First, replace all double-quotes with quad-quotes
self.buffer = self.buffer.replace("\"", "\"\"")
self.buffer = "\"{0}\"".format(self.buffer)
sys.stdout.write(self.buffer)
self.quote_buffer = False
self.buffer = None
def handle_data(self, data):
if self.in_cell:
#if self.data_interrupt:
# sys.stdout.write(" ")
if self.buffer == None:
self.buffer = ""
self.buffer += self.despace_re.sub(" ", data).strip()
self.data_interrupt = False
parser = HTMLTableParser()
parser.feed(sys.stdin.read())
, Одно улучшение для этого сценария могло быть должно добавить поддержку определения другого разделителя строки (или автоматически вычислить корректный платформой), и другой разделитель столбца.
вот несколько вариантов
http://groups.google.com/group/ruby-talk-google/browse_thread/thread/cfae0aa4b14e5560?hl=nn
http: / /ouseful.wordpress.com/2008/10/14/data-scraping-wikipedia-with-google-spreadsheets/
Вот пример использования pQuery и Spreadsheet :: WriteExcel :
use strict;
use warnings;
use Spreadsheet::WriteExcel;
use pQuery;
my $workbook = Spreadsheet::WriteExcel->new( 'data.xls' );
my $sheet = $workbook->add_worksheet;
my $row = 0;
pQuery( 'http://www.blahblah.site' )->find( 'tr' )->each( sub{
my $col = 0;
pQuery( $_ )->find( 'td' )->each( sub{
$sheet->write( $row, $col++, $_->innerHTML );
});
$row++;
});
$workbook->close;
Пример просто извлекает все теги tr что он находит в файле Excel. Вы можете легко настроить его так, чтобы он выбирал конкретную таблицу или даже запускал новый файл Excel для тега table .
Дополнительные моменты, которые следует учитывать:
Чтобы узнать, используется ли rowspan или colspan, вы можете:
pQuery( $data )->find( 'td' )->each( sub{
my $number_of_cols_spanned = $_->getAttribute( 'colspan' );
});
Этот метод на самом деле не является библиотекой ИЛИ программой, но для специальных преобразований вы можете
Я знаю, что это работает с Excel, и я считаю, что сделал это с помощью электронной таблицы OpenOffice.
Но вы, вероятно, сделали бы это. предпочитаю Perl или Ruby скрипт ...
В Perl вы можете использовать модуль HTML :: TableExtract
для извлечения данных из таблицы, а затем использовать Text :: CSV_XS
для создания CSV-файл или Spreadsheet :: WriteExcel
для создания файла Excel.
Вот сценарий ruby, который использует nokogiri - http://nokogiri.rubyforge.org/nokogiri/
require 'nokogiri'
doc = Nokogiri::HTML(table_string)
doc.xpath('//table//tr').each do |row|
row.xpath('td').each do |cell|
print '"', cell.text.gsub("\n", ' ').gsub('"', '\"').gsub(/(\s){2,}/m, '\1'), "\", "
end
print "\n"
end
Работал для моего базового теста.
Я не уверен, есть ли для этого готовая библиотека, но если вы готовы запачкать руки небольшим Perl, вы, вероятно, могли бы что-то сделать с Text :: CSV
и HTML :: Parser
.
OpenOffice.org может просматривать таблицы HTML. Просто используйте команду Open в файле HTML или выберите и скопируйте таблицу в браузере, а затем вставьте специальные в OpenOffice.org. Это запрашивает вас для типа файла, один из которых должен быть HTML. Выберите это и вуаля!