mirror of
https://github.com/zaphar/sheetsui.git
synced 2025-07-23 21:39:51 -04:00
Compare commits
2 Commits
b8085b6bb0
...
0d6a1625a2
Author | SHA1 | Date | |
---|---|---|---|
0d6a1625a2 | |||
2cd0bc454f |
@ -132,27 +132,19 @@ impl Book {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Construct a payload of (html, csv_text) for the address range.
|
/// Construct a payload of (html, csv_text) for a sheet.
|
||||||
pub fn range_to_clipboard_content(&self, range: AddressRange) -> Result<(String, String), anyhow::Error> {
|
pub fn sheeet_to_clipboard_content(&self, sheet: u32) -> Result<(String, String), anyhow::Error> {
|
||||||
use html::tables;
|
let rows = self.get_export_rows_for_sheet(sheet)?;
|
||||||
let rows = self.get_rows_for_range(&range).unwrap_or_default();
|
rows_to_clipboard_content(rows)
|
||||||
let mut html = tables::Table::builder();
|
|
||||||
let mut writer = csv::Writer::from_writer(vec![]);
|
|
||||||
for row in rows {
|
|
||||||
let mut html_row = tables::TableRow::builder();
|
|
||||||
writer.write_record(&row)?;
|
|
||||||
for cell in row {
|
|
||||||
let mut html_cell = tables::TableCell::builder();
|
|
||||||
html_cell.text(cell);
|
|
||||||
html_row.push(html_cell.build());
|
|
||||||
}
|
|
||||||
html.push(html_row.build());
|
|
||||||
}
|
|
||||||
|
|
||||||
let csv_content = writer.into_inner().expect("Failed to get the csv content");
|
|
||||||
Ok((html.build().to_string(), String::from_utf8_lossy(&csv_content).to_string()))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Construct a payload of (html, csv_text) for the address range.
|
||||||
|
pub fn range_to_clipboard_content(&self, range: AddressRange) -> Result<(String, String), anyhow::Error> {
|
||||||
|
let rows = self.get_rows_for_range(&range).unwrap_or_default();
|
||||||
|
rows_to_clipboard_content(rows)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Get rows for current sheet to export.
|
||||||
pub fn get_export_rows(&self) -> Result<Vec<Vec<String>>> {
|
pub fn get_export_rows(&self) -> Result<Vec<Vec<String>>> {
|
||||||
let sheet = self.location.sheet;
|
let sheet = self.location.sheet;
|
||||||
Ok(self.get_export_rows_for_sheet(sheet)?)
|
Ok(self.get_export_rows_for_sheet(sheet)?)
|
||||||
@ -730,6 +722,25 @@ impl Book {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn rows_to_clipboard_content(rows: Vec<Vec<String>>) -> std::result::Result<(String, String), anyhow::Error> {
|
||||||
|
use html::tables;
|
||||||
|
let mut html = tables::Table::builder();
|
||||||
|
let mut writer = csv::Writer::from_writer(vec![]);
|
||||||
|
for row in rows {
|
||||||
|
let mut html_row = tables::TableRow::builder();
|
||||||
|
writer.write_record(&row)?;
|
||||||
|
for cell in row {
|
||||||
|
let mut html_cell = tables::TableCell::builder();
|
||||||
|
html_cell.text(cell);
|
||||||
|
html_row.push(html_cell.build());
|
||||||
|
}
|
||||||
|
html.push(html_row.build());
|
||||||
|
}
|
||||||
|
|
||||||
|
let csv_content = writer.into_inner().expect("Failed to get the csv content");
|
||||||
|
Ok((html.build().to_string(), String::from_utf8_lossy(&csv_content).to_string()))
|
||||||
|
}
|
||||||
|
|
||||||
fn calculate_area(sheet: u32, start: &Address, end: &Address) -> Area {
|
fn calculate_area(sheet: u32, start: &Address, end: &Address) -> Area {
|
||||||
let area = Area {
|
let area = Area {
|
||||||
sheet,
|
sheet,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user