大家好:使用SQLiteDataReader,我可以获取表值,但无法使用SQLiteDataReader GetName获取列值
我的目标是我想在excel文件中与列名称的数据是相同的查询,然后由表的值。w什么是错误在这里?谢谢
我想我在for循环中犯了个错误。
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 = xlWorkBook.Worksheets[1]; // (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
xlWorkSheet.Name = "Stats";
string cs = @"C:\\db_test\\Database.db";
string data = String.Empty;
int i = 0;
int j = 0;
using (SQLiteConnection con = new SQLiteConnection("Data Source=C:\\db_test\\Database.db"))
{
con.Open();
//string stm = "SELECT Oid from Stats";
StringBuilder query = new StringBuilder();
query.Append("SELECT");
query.Append("[Oid], [CreatedOn], [OrderOid] ");
query.Append(",[OrderLineOid], [OrderNumber], [Product] ");
query.Append(",[PaperTypeName], [OutputProfile], [OutputProfileChannel] ");
query.Append("FROM Stats");
using (SQLiteCommand cmd = new SQLiteCommand(query.ToString(), con))
{
using (SQLiteDataReader rdr = cmd.ExecuteReader())
{
while (rdr.Read()) // Reading Rows
{
var columns = new List<string>();
for (j = 0; j <= rdr.FieldCount - 1; j++) // Looping throw colums
{
columns.Add(rdr.GetName(j));
data = rdr.GetValue(j).ToString();
xlWorkSheet.Cells[i + 1, j + 1] = data;
}
i++;
}
}
}
con.Close();
}
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) +"\\"+ "Statictics_" + DateTime.Now.ToString("yyyyMMdd") + ".xls";
xlWorkBook.SaveAs(path, 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);
1条答案
按热度按时间yi0zb3m41#
看起来你很可能从帖子的评论中得到了你需要的解决方案,但我会提供另一个。我维护一个库Sylvan.Data.Excel,它比Excel互操作更容易、更快。这个库是开源的,有一个许可证(MIT)。
写入.xlsx文件只需要几行代码。
虽然我的库支持阅读最常见的Excel格式,但它只支持写入.xlsx文件。它是fastest Excel library for .NET。(你上面提供的代码)需要大约15分钟来写65k的记录,而Sylvan可以在不到半秒的时间内写。我的库也不需要在机器上安装Excel,它唯一依赖的是核心.NET运行时库。