Có plugin nào trong Ruby chuyển đổi tệp CSV sang Excel không. Tôi đã làm rất ít Google nhưng tất cả những gì tôi thấy là chuyển đổi tệp Excel thành CSV. Tôi biết vài đá quý mà tôi có thể tinh chỉnh một chút và sử dụng để chuyển đổi Excel sang CSV nhưng tôi cần phải biết nếu có ai đã làm điều đó trước đây.Làm thế nào để chuyển đổi CSV sang Excel?
Trả lời
Theo this post, đá quý spreadsheet là một khả năng. Có vẻ như đây là một viên ngọc rất phổ biến. Kiểm tra nó ra. Ví dụ:
book = Spreadsheet::Workbook.new
sheet1 = book.create_worksheet
header_format = Spreadsheet::Format.new(
:weight => :bold,
:horizontal_align => :center,
:bottom => true,
:locked => true
)
sheet1.row(0).default_format = header_format
FasterCSV.open(input_path, 'r') do |csv|
csv.each_with_index do |row, i|
sheet1.row(i).replace(row)
end
end
book.write(output_path)
Theo this post, write_xlsx là một khả năng.
Tôi đã sử dụng Apache POI library với JRuby để xuất tệp xls. Đây là một ví dụ nhanh.
require 'java'
require 'poi.jar'
# require 'poi-ooxml.jar'
require 'rubygems'
require 'fastercsv'
java_import org.apache.poi.hssf.usermodel.HSSFWorkbook;
wb = HSSFWorkbook.new # OR XSSFWorkbook, for xlsx
sheet = wb.create_sheet('Sheet 1')
FasterCSV.open(ARGV.first) do |csv|
csv.each_with_index do |csv_row, line_no|
row = sheet.createRow(line_no)
csv_row.each_with_index do |csv_value, col_no|
cell = row.createCell(col_no)
cell.setCellValue(csv_value) unless csv_value.nil? # can't pass nil.
end
end
end
f = java.io.FileOutputStream.new("workbook.xls")
wb.write(f)
f.close
Một số phương pháp hữu ích để định dạng bảng tính POI là
sheet.createFreezePane(0,1,0,1)
wb.setRepeatingRowsAndColumns(0, -1, -1, 0, 1)
sheet.setColumnWidth(i, 100 *256)
sheet.autoSizeColumn(i)
, nhưng hãy cẩn thận, nếu bạn đang chạy trong chế độ không đầu, bạn phải gọijava.lang.System.setProperty("java.awt.headless", "true")
Bạn cũng có thể sử dụng Win32ole trên Windows, nếu bạn có Excel cài đặt
require 'win32ole'
require 'rubygems'
require 'fastercsv'
xl = WIN32OLE.new('Excel.Application')
xl.Visible = 0
wb = xl.Workbooks.Add
ws = wb.Worksheets(1)
FasterCSV.open(ARGV.first) do |csv|
csv.each_with_index do |csv_row, line_no|
csv_row.each_with_index do |value, col|
ws.Cells(line_no + 1, col + 1).Value = value
end
end
end
wb.SaveAs("workbook.xls", 56) # 56 = xlExcel8 aka Excel 97-2003. i.e. xls
wb.SaveAs("workbook.xlsx", 51) # 51 = xlOpenXMLWorkbook
wb.SaveAs("workbook.xlsb", 50) # 50 = xlExcel12
wb.Close(2) #xlDoNotSaveChanges
xl.Quit
Một số phương pháp hữu ích để định dạng với Excel là
xl.Rows(1).Font.Bold = true
ws.Cells.EntireColumn.AutoFit
Tuy nhiên, một tùy chọn khác là viết trực tiếp vào XML Spreadsheet của Microsoft định dạng, như Ryan Bates tại Railscasts.com hiện at the end of his Exporting CSV and Excel episode.
<?xml version="1.0"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<Worksheet ss:Name="Sheet1">
<Table>
<Row>
<Cell><Data ss:Type="String">ID</Data></Cell>
<Cell><Data ss:Type="String">Name</Data></Cell>
<Cell><Data ss:Type="String">Release Date</Data></Cell>
<Cell><Data ss:Type="String">Price</Data></Cell>
</Row>
<% @products.each do |product| %>
<Row>
<Cell><Data ss:Type="Number"><%= product.id %></Data></Cell>
<Cell><Data ss:Type="String"><%= product.name %></Data></Cell>
<Cell><Data ss:Type="String"><%= product.released_on %></Data></Cell>
<Cell><Data ss:Type="Number"><%= product.price %></Data></Cell>
</Row>
<% end %>
</Table>
</Worksheet>
</Workbook>
Nó có vẻ như nếu bạn đang sử dụng win32ole anyway bạn chỉ có thể 'mở' các tập tin csv trong excel và lưu nó như xls. Tôi không chắc chắn những gì mã sẽ được mặc dù. – pguardiario
Điểm tốt. Tôi hy vọng chỉ làm cho ví dụ trông giống như ví dụ trên, nhưng việc mở CSV trực tiếp vào Excel là một ý tưởng thông minh hơn. –
Có thêm một gem tôi tìm thấy writeexcel đã làm công việc rất dễ dàng .. Cảm ơn một lần nữa. –
Nếu bạn không tìm thấy bất kỳ viên ngọc cho chuyển đổi CSV để EXCEL sau đó bạn có thể thử để tìm thấy hai viên ngọc riêng
- Read/Write CSV (Để đọc tập tin CSV) ví dụ FasterCSV
- Đọc/ghi EXCEL (Để viết tệp EXCEL), ví dụ: SpreadSheet
Lưu ý rằng FasterCSV được tích hợp vào Ruby 1.9 ngay bây giờ dưới dạng 'require 'csv" 'trong thư viện chuẩn. – Phrogz
- 1. Làm thế nào để chuyển đổi Excel XLS sang CSV bằng cách sử dụng PHP
- 2. Có cách nào đơn giản để chuyển đổi tệp .xls sang tệp .csv không? (Excel)
- 3. Chuyển đổi JSON sang CSV
- 4. Chuyển đổi DataTable sang luồng CSV
- 5. Chuyển đổi XLSX sang CSV chính xác
- 6. Làm thế nào để chuyển đổi một số ngày tháng nối tiếp Excel sang .NET DateTime?
- 7. Chuyển đổi XML sang CSV bằng Javascript
- 8. Chuyển đổi từ cơ sở dữ liệu/Excel/CSV sang đồ đạc dữ liệu YAML?
- 9. Xuất Javascript hoặc Flash sang CSV/Excel
- 10. Thư viện PHP để chuyển đổi JSON sang CSV?
- 11. chuyển đổi excel sang pdf trong python
- 12. csv để nổi trội chuyển đổi
- 13. Làm thế nào để chuyển đổi char * sang std :: vector?
- 14. Làm thế nào để chuyển đổi nsstring sang cString?
- 15. Làm thế nào để chuyển đổi ISO8859-15 sang UTF8?
- 16. làm thế nào để chuyển đổi IEnumerable sang IObservable?
- 17. làm thế nào để chuyển đổi nsstring sang uicolor?
- 18. Làm thế nào để chuyển đổi BigInteger sang BigDecimal?
- 19. Làm thế nào để chuyển đổi CGFontRef sang UIFont?
- 20. Làm thế nào để chuyển đổi dispatch_data_t sang NSData?
- 21. Làm thế nào để chuyển đổi typedef enum sang NSNumber?
- 22. Làm thế nào để chuyển đổi chm sang pdf
- 23. Làm thế nào để chuyển đổi HTML sang XHTML?
- 24. Làm thế nào để chuyển đổi Double.POSITIVE_INFINITY sang BigDecimal?
- 25. Làm thế nào để chuyển đổi hình ảnh sang html?
- 26. Làm thế nào để chuyển đổi char * sang BSTR?
- 27. Làm thế nào để chuyển đổi NSArray sang NSData?
- 28. Làm thế nào để chuyển đổi NSUrl sang NSString?
- 29. Làm thế nào để chuyển đổi CFStringRef sang NSString?
- 30. Làm thế nào để chuyển đổi CFArrayRef sang NSArray?
Thông thường, chúng tôi chỉ cho phép Excel nhập CSV. Thông thường nó chỉ hoạt động. –
Một giải pháp thay thế gần như tự nhiên khác: Nhập XML có thể tạo ra các tài liệu Excel "đẹp". Tôi cung cấp dữ liệu đầu ra từ #to_xml của Rails vào XSLT để làm điều này. –
Câu hỏi có thể trùng lặp: http://stackoverflow.com/questions/6646430/whats-the-easiest-way-to-export-a-csv-to-excel-with-ruby –