gpt4 book ai didi

C# WPF - 将 SQLite 数据库复制到 Excel

转载 作者:行者123 更新时间:2023-11-30 16:50:11 30 4
gpt4 key购买 nike

我目前正在运行一个 C# 项目,它处理大量数据并将其存储在 SQLite 数据库中。但是我想将这些文件从数据库导出到一个简单的 excel 工作表,例如创建一些文件,其中数据库中的每个表都是 excel 中的工作表,只是一个普通副本。

目前我正在用 .csv 流编写器做同样的事情,它非常慢,因为我有大约 140000 个数据集。这意味着需要将整个表复制或按 block 复制。

我没有找到任何代码片段如何在 c# 中使用 sqlite 执行此操作。你有什么想法,我怎么能做到这一点?

最佳答案

我从来没有在 SQLite 中这样做过,我也认为直接输出总是更好,但我对此很好奇。

所以我写了这个试用版:

using System;
using System.Data.SQLite;
using Excel = Microsoft.Office.Interop.Excel;

namespace ExcelSqlite
{
internal class Program
{
private static void Main(string[] args)
{
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;

xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

string cs = "URI=file:test.db";
string data = String.Empty;

int i = 0;
int j = 0;

using (SQLiteConnection con = new SQLiteConnection(cs))
{
con.Open();

string stm = "SELECT * FROM Contacts";

using (SQLiteCommand cmd = new SQLiteCommand(stm, con))
{
using (SQLiteDataReader rdr = cmd.ExecuteReader())
{
while (rdr.Read()) // Reading Rows
{
for (j = 0; j <= rdr.FieldCount - 1; j++) // Looping throw colums
{
data = rdr.GetValue(j).ToString();
xlWorkSheet.Cells[i + 1, j + 1] = data;
}
i++;
}
}
}
con.Close();
}

xlWorkBook.SaveAs("sqliteToExcel.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();

releaseObject(xlWorkSheet);
releaseObject(xlWorkBook);
releaseObject(xlApp);
}

private static void releaseObject(object obj)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
obj = null;
}
catch (Exception ex)
{
obj = null;
}
finally
{
GC.Collect();
}
}
}
}

希望如此,这将引导您走向正确的方向。

关于C# WPF - 将 SQLite 数据库复制到 Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35432931/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com