pub enum XlsxToMdError {
Io(Error),
Parse(Error),
Utf8(Utf8Error),
Zip(String),
ParseInt(ParseIntError),
Config(String),
UnsupportedFeature {
sheet: String,
cell: String,
message: String,
},
SecurityViolation(String),
}Expand description
xlsxzeroクレート全体で使用するエラー型
このエラー型は、Excelファイルの読み込み、解析、変換処理中に発生する すべてのエラーを統一的に扱うために使用されます。
§エラーの種類
Io: I/O操作中に発生したエラー(ファイル読み込み失敗など)Parse: Excelファイルの解析中に発生したエラー(calamine由来)Config: 設定の検証に失敗したエラー(無効な範囲指定など)UnsupportedFeature: サポートされていない機能が検出されたエラー
§使用例
use xlsxzero::XlsxToMdError;
use std::fs::File;
fn read_excel_file(path: &str) -> Result<(), XlsxToMdError> {
let file = File::open(path)?; // Ioエラーが自動的に変換される
// ... 処理 ...
Ok(())
}Variants§
Io(Error)
I/O操作中に発生したエラー
ファイルの読み込み失敗、書き込み失敗など、標準ライブラリの
std::io::Errorが発生した場合に使用されます。
#[from]属性により、std::io::Errorから自動的に変換されます。
Parse(Error)
Excelファイルの解析中に発生したエラー
calamineクレートがExcelファイルを解析する際に発生したエラーです。 ファイル形式が不正、破損したファイル、サポートされていない形式などが 原因となります。
#[from]属性により、calamine::Errorから自動的に変換されます。
Utf8(Utf8Error)
UTF-8文字列の変換エラー
XML解析時にUTF-8文字列への変換に失敗した場合に発生します。
Zip(String)
ZIPアーカイブの解析エラー
XLSXファイル(ZIPアーカイブ)の解析中に発生したエラーです。
ParseInt(ParseIntError)
数値の解析エラー
文字列から数値への変換に失敗した場合に発生します。
Config(String)
設定の検証に失敗したエラー
ConverterBuilder::build()時に設定を検証し、無効な設定が検出された
場合に発生します。例えば、セル範囲の開始座標が終了座標より大きい場合や、
カスタム日付形式が不正な場合などです。
§例
use xlsxzero::{ConverterBuilder, XlsxToMdError};
let result = ConverterBuilder::new()
.with_range((10, 0), (0, 0)) // 無効な範囲
.build();
match result {
Err(XlsxToMdError::Config(msg)) => {
println!("設定エラー: {}", msg);
}
_ => {}
}UnsupportedFeature
サポートされていない機能が検出されたエラー
Phase Iでは実装されていない機能(例: ピボットテーブル、高度な数式など) が検出された場合に発生します。エラーメッセージには、シート名、セル座標、 詳細なメッセージが含まれます。
§例
use xlsxzero::XlsxToMdError;
let error = XlsxToMdError::UnsupportedFeature {
sheet: "Sheet1".to_string(),
cell: "A1".to_string(),
message: "Pivot table is not supported in Phase I".to_string(),
};
println!("{}", error);
// 出力: "Unsupported feature at sheet 'Sheet1', cell A1: Pivot table is not supported in Phase I"SecurityViolation(String)
セキュリティ制限に違反したエラー
ZIP bomb攻撃、パストラバーサル攻撃、ファイルサイズ制限などの セキュリティ制限に違反した場合に発生します。
§例
use xlsxzero::XlsxToMdError;
let error = XlsxToMdError::SecurityViolation(
"File size exceeds maximum allowed size".to_string()
);Trait Implementations§
Source§impl Debug for XlsxToMdError
impl Debug for XlsxToMdError
Source§impl Display for XlsxToMdError
impl Display for XlsxToMdError
Source§impl Error for XlsxToMdError
impl Error for XlsxToMdError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
Source§impl From<Error> for XlsxToMdError
impl From<Error> for XlsxToMdError
Source§impl From<Error> for XlsxToMdError
impl From<Error> for XlsxToMdError
Source§impl From<ParseIntError> for XlsxToMdError
impl From<ParseIntError> for XlsxToMdError
Source§fn from(source: ParseIntError) -> Self
fn from(source: ParseIntError) -> Self
Auto Trait Implementations§
impl Freeze for XlsxToMdError
impl !RefUnwindSafe for XlsxToMdError
impl Send for XlsxToMdError
impl Sync for XlsxToMdError
impl Unpin for XlsxToMdError
impl !UnwindSafe for XlsxToMdError
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more