使用C++實現(xiàn)Excel文件與CSV之間的相互轉換
CSV格式是一種通用的文本文件格式,可在多個應用程序之間共享和使用。相比之下,Excel文件是一種電子表格格式,通常只能在Microsoft Excel中編輯和查看。因此,將Excel文件轉換為CSV格式可使數(shù)據(jù)更方便地在其他應用程序中使用;而將CSV文件轉換為Excel格式則有利于在Microsoft Excel中編輯和查看。這種互相轉換可以方便地在不同應用程序之間交換或分享數(shù)據(jù)。在本文中,我們將演示如何使用 Spire.XLS for C++ 將 Excel 轉換為 CSV 或將 CSV 轉換為Excel。
- 將 Excel 轉換為 CSV
- 將 Excel 中的可見數(shù)據(jù)轉換為 CSV
- 將 CSV 轉換為 Excel
安裝 Spire.XLS for C++
有兩種方法可以將 Spire.XLS for C++ 集成到您的應用程序中。一種方法是通過 NuGet 安裝它,另一種方法是從我們的網(wǎng)站下載包并將庫復制到您的程序中。通過 NuGet 安裝更簡單,更推薦使用。您可以通過訪問以下鏈接找到更多詳細信息。
如何將 Spire.XLS for C++ 集成到 C++ 程序中
將 Excel 轉換為 CSV
具體步驟如下:
- 初始化 Workbook 類的實例。
- 使用 Workbook->LoadFromFile() 方法加載 Excel 文件。
- 使用 Workbook->GetWorksheets()->Get(int index) 方法通過索引獲取工作簿中的特定工作表。
- 使用 XlsWorksheet->SaveToFile (LPCWSTR_S fileName, LPCWSTR_S separator, Spire::Common::Encoding* encoding) 方法將工作表保存到 CSV 文件中。
完整代碼
#include "Spire.Xls.o.h";
using namespace Spire::Xls;
int main() {
//指定輸出文件路徑和名稱
std::wstring inputPath = L"輸入\\";
std::wstring inputFile = inputPath + L"示例文檔.xlsx";
std::wstring outputPath = L"輸出\\";
std::wstring outputFile = outputPath + L"結果文檔.csv";
//初始化 Workbook 類的實例
intrusive_ptr<Workbook> workbook = new Workbook();
//加載Excel文檔
workbook->LoadFromFile(inputFile.c_str());
//獲取特定工作表
intrusive_ptr<Worksheet> sheet = dynamic_pointer_cast<Worksheet>(workbook->GetWorksheets()->Get(0));
//將工作表保存為CSV文件
sheet->SaveToFile(outputFile.c_str(), L",", Encoding::GetUTF8());
workbook->Dispose();
}效果圖

將 Excel 中的可見數(shù)據(jù)轉換為 CSV
如果只想將工作表中的可見數(shù)據(jù)保存為 CSV,具體步驟如下:
- 初始化 Workbook 類的實例。
- 使用 Workbook->LoadFromFile() 方法加載 Excel 文件。
- 使用 Workbook->GetWorksheets()->Get(int index) 方法通過索引獲取工作簿中的特定工作表。
- 使用 XlsWorksheet->SaveToFile (LPCWSTR_S fileName, LPCWSTR_S separator, bool retainHiddenData) 方法將工作表中的可見數(shù)據(jù)保存到 CSV 文件中。
完整代碼
#include "Spire.Xls.o.h";
using namespace Spire::Xls;
int main() {
//指定輸出文件路徑和名稱
std::wstring inputPath = L"輸入\\";
std::wstring inputFile = inputPath + L"示例文檔.xlsx";
std::wstring outputPath = L"輸出\\";
std::wstring outputFile = outputPath + L"結果文檔.csv";
//初始化 Workbook 類的實例
intrusive_ptr<Workbook> workbook = new Workbook();
//加載Excel文檔
workbook->LoadFromFile(inputFile.c_str());
//獲取特定工作表
intrusive_ptr<Worksheet> sheet = dynamic_pointer_cast<Worksheet>(workbook->GetWorksheets()->Get(0));
//將工作表中的可見數(shù)據(jù)保存到CSV文件中
dynamic_pointer_cast<Worksheet>(workbook->GetWorksheets()->Get(0))->SaveToFile(outputFile.c_str(), L";", false);
workbook->Dispose();
}效果圖

將 CSV 轉換為 Excel
將 CSV 文件轉換為 Excel的具體步驟如下:
- 初始化 Workbook 類的實例。
- 使用 Workbook->LoadFromFile(LPCWSTR_S fileName,LPCWSTR_S separator) 方法加載帶有分隔符的 CSV 文件。
- 使用 Workbook->GetWorksheets()->Get(int index) 方法通過索引獲取文件中的特定工作表。
- 設置忽略錯誤選項,以在使用 Worksheet->GetRange(LPCWSTR_S name)->SetIgnoreErrorOptions(IgnoreErrorType::NumberAsText) 方法將特定單元格范圍中的數(shù)字保存為文本時忽略錯誤。
- 使用 Worksheet->GetAllocatedRange()->AutoFitColumns() 方法自動調整列寬。
- 使用 Workbook->SaveToFile (LPCWSTR_S fileName, ExcelVersion version) 方法將 CSV 文件保存到 Excel 文件中。
完整代碼
#include "Spire.Xls.o.h";
using namespace Spire::Xls;
int main() {
//指定輸出文件路徑和名稱
std::wstring inputPath = L"輸入\\";
std::wstring inputFile = inputPath + L"示例.csv";
std::wstring outputPath = L"輸出\\";
std::wstring outputFile = outputPath + L"CSVToExcel_out.xlsx";
//初始化 Workbook 類的實例
intrusive_ptr<Workbook> workbook = new Workbook();
//加載CSV文檔
workbook->LoadFromFile(inputFile.c_str(), L",");
//獲取特定工作表
intrusive_ptr<Worksheet> sheet = dynamic_pointer_cast<Worksheet>(workbook->GetWorksheets()->Get(0));
//將忽略錯誤選項設置為將特定單元格區(qū)域中的數(shù)字保存為文本時忽略錯誤
dynamic_pointer_cast<CellRange>(sheet->GetRange(L"D2:D12"))->SetIgnoreErrorOptions(IgnoreErrorType::NumberAsText);
sheet->GetAllocatedRange()->AutoFitColumns();
//保存文檔
workbook->SaveToFile(outputFile.c_str(), ExcelVersion::Version2013);
workbook->Dispose();
}效果圖

到此這篇關于使用C++實現(xiàn)Excel文件與CSV之間的相互轉換的文章就介紹到這了,更多相關C++ Excel轉CSV內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C++?opencv利用grabCut算法實現(xiàn)摳圖示例
這篇文章主要為大家介紹了C++?opencv利用grabCut算法實現(xiàn)摳圖的代碼示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05
C++中sprintf使用的方法與printf的區(qū)別分析
這篇文章主要介紹了C++中sprintf使用的方法與printf的區(qū)別,實例分析了sprintf與printf的具體用法及相關注意事項,具有一定參考借鑒價值,需要的朋友可以參考下2015-01-01
C++?LeetCode1827題解最少操作使數(shù)組遞增
這篇文章主要為大家介紹了C++?LeetCode1827題解最少操作使數(shù)組遞增示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12

