成果物概要
Kindlist
Kindle for PCのXMLファイルを解析して、Excel形式に変換する機能を提供します。
書籍一覧が記載されたExcelファイルを、Kindle書籍管理にご活用下さい。
Vectorよりダウンロードが可能です。
お知らせ
窓の杜にてご紹介頂きました!
Kindleで購入済みの電子書籍をExcelで管理するには? 簡単にXLSX形式に変換できるツール
画面イメージ
動作に必要なソフト
.NET Desktop Runtime 6.0.4 (x64)以降
Kindle for PC (またはKindleSyncMetadataCache.xml)
使い方
基本は「Kindlist.exe」を起動して「変換」ボタンを押すだけ。
詳細はnoteまたは付属のReadmeをご参照ください。
技術情報
開発はVisual Studio 2022とC#で行っています。
XMLを解析してKindleInfoという独自クラスに書籍情報を設定しています。
KindleInfoのListに設定した内容をClosedXMLを使用してExcel形式で出力しています。
この辺りは特筆すべきことは無いと思います。
困ったこと
取得した書籍情報を書籍名順でソートし、Excel出力したところ以下のようになってしまいました。
本来は1、2、3 ・・・ 9、10、11、12 ・・・と並んで欲しいところ。
実際には1、10、11、12 ・・・ 16、2、3と並んでしまいました。
これはプログラム言語(C#)標準のソート機能を利用しているため、仕様通りとなります。
しかし今回は蔵書管理を行いため、自然順(エクスプローラ順)ソートを行う方法を調べてみました。
対応内容
独自に自然順ソートを実装している強者の方もいらっしゃいましたが
今回はStrCmpLogicalWというWindows APIを呼び出す方法を採用しました。
/// <summary>
/// 自然順で文字列比較
/// </summary>
public class NaturalSortComparer : IComparer, IComparer<string>
{
[DllImport("shlwapi.dll", CharSet = CharSet.Unicode, ExactSpelling = true)]
private static extern int StrCmpLogicalW(string x, string y);
public int Compare(string x, string y)
{
return StrCmpLogicalW(x, y);
}
public int Compare(object x, object y)
{
return this.Compare(x.ToString(), y.ToString());
}
}
これにより最小限の実装で、書籍名が自然順(エクスプローラ順)にソートできるようになりました。
スペシャルサンクス
アイコン制作:みなみ様
命名:みなみ様
広報:すいか様
感想
普段はあまり意識していませんでしたが、エクスプローラのソート順というのは非常に優秀なんだと実感しました。
参考情報
Kindle蔵書一覧を取得する方法の記事と@error_401さんのコメントを参考にさせて頂きました。