gpt4 book ai didi

excel - 我可以从数据源导入 INTO excel 而无需迭代吗?

转载 作者:行者123 更新时间:2023-12-02 14:55:45 25 4
gpt4 key购买 nike

目前我有一个应用程序,它从 SQLite 数据库获取信息并将其放入 Excel。但是,我必须获取每个 DataRow,迭代每个项目,并将每个值放入其自己的单元格中并确定突出显示。这导致将 9000 条记录文件导出到 Excel 需要 20 分钟。我确信可以比这更快地完成。我的想法是,我可以使用数据源填充 Excel 范围,然后使用列标题和行号仅对需要格式化的行进行格式化。然而,当我在网上查看时,无论我看起来输入什么,它总是显示使用Excel作为数据库的示例,而不是导入到excel中。除非我忘记了一个关键词或者to。现在,此功能必须在代码中完成,因为它是更大应用程序的一部分。否则我只会让 Excel 连接到数据库并自行提取信息。不幸的是事实并非如此。任何可以帮助我快速加载 Excel 工作表的信息将不胜感激。谢谢。

其他信息:
必须在代码中从数据库中提取信息的另一个原因是,并非每台计算机都加载了该信息上面会有 Excel。使用该应用程序的人可能会被简单地告知导出数据并将其通过电子邮件发送给他们的主管。设置应用程序包含应用程序生成正确格式所需的 dll。

示例代码(当前):

    For Each strTemp In strColumns
excelRange = worksheet.Cells(1, nCounter)
excelRange.Select()
excelRange.Value2 = strTemp
excelRange.Interior.Color = System.Drawing.Color.Gray.ToArgb()
excelRange.BorderAround(Excel.XlLineStyle.xlContinuous, Excel.XlBorderWeight.xlThin, Excel.XlColorIndex.xlColorIndexAutomatic, Type.Missing)
nCounter += 1
Next

现在,这只是我正在进行的迭代的示例代码。当我真正处理数据库中的信息时,我会迭代 dataTable 的 Rows,然后迭代 dataRow 中的项目,并执行与上面基本相同的操作;逐个值,选择范围并将值放入单元格中,格式化单元格(如果它是报表的一部分)(并不总是灰色),然后移至下一组数据。我想做的是将所有数据放入 Excel 工作表中(A2:??,不是一行,而是多行),然后迭代报告并格式化每一行。这样,我唯一一次遍历所有记录是当每条记录都是报告的一部分时。

理想的代码

excelRange = worksheet.Cells("A2", "P9000")
excelRange.DataSource = ds 'ds would be a queried dataSet, and I know there is no excelRange.DataSource.
'Iteration code to format cells

更新:

我知道我的示例是用 VB 编写的,但这是因为我也尝试编写该应用程序的 VB 版本,因为我的老板更喜欢 VB。但是,这是我使用记录集的最终代码。 ConvertToRecordset函数是从here获得的.

        private void CreatePartSheet(Excel.Worksheet excelWorksheet)
{
_dataFactory.RevertDatabase();
excelWorksheet.Name = "Part Sheet";
string[] strColumns = Constants.strExcelPartHeaders;
CreateSheetHeader(excelWorksheet, strColumns);

System.Drawing.Color clrPink = System.Drawing.Color.FromArgb(203, 192, 255);
System.Drawing.Color clrGreen = System.Drawing.Color.FromArgb(100, 225, 137);

string[] strValuesAndTitles = {/*...Column Names...*/};

List<string> lstColumns = strValuesAndTitles.ToList<string>();

System.Data.DataSet ds = _dataFactory.GetDataSet(Queries.strExport);
ADODB.Recordset rs = ConvertToRecordset(ds.Tables[0]);
excelRange = excelWorksheet.get_Range("A2", "ZZ" + rs.RecordCount.ToString());
excelRange.Cells.CopyFromRecordset(rs, rs.RecordCount, rs.Fields.Count);
int nFieldCount = rs.Fields.Count;

for (int nCounter = 0; nCounter < rs.RecordCount; nCounter++)
{
int nRowCounter = nCounter + 2;
List<ReportRecord> rrPartReports = _lstReports.FindAll(rr => rr.PartID == nCounter).ToList<ReportRecord>();
excelRange = (Excel.Range)excelWorksheet.get_Range("A" + nRowCounter.ToString(), "K" + nRowCounter.ToString());
excelRange.Select();
excelRange.NumberFormat = "@";

if (rrPartReports.Count > 0)
{
excelRange.Interior.Color = System.Drawing.Color.FromArgb(230, 216, 173).ToArgb(); //Light Blue

foreach (ReportRecord rr in rrPartReports)
{
if (lstColumns.Contains(rr.Title))
{
excelRange = (Excel.Range)excelWorksheet.Cells[nRowCounter, lstColumns.IndexOf(rr.Title) + 1];
excelRange.Interior.Color = rr.Description.ToUpper().Contains("TAG") ? clrGreen.ToArgb() : clrPink.ToArgb();

if (rr.Description.ToUpper().Contains("TAG"))
{
rs.Find("PART_ID=" + (nCounter + 1).ToString(), 0, ADODB.SearchDirectionEnum.adSearchForward, "");
excelRange.AddComment(Environment.UserName + ": " + _dataFactory.GetTaggedPartPrevValue(rs.Fields["POSITION"].Value.ToString(), rr.Title));
}
}
}
}

if (nRowCounter++ % 500 == 0)
{
progress.ProgressComplete = ((double)nRowCounter / (double)rs.RecordCount) * (double)100;
Notify();
}
}

rs.Close();

excelWorksheet.Columns.AutoFit();
progress.Message = "Done Exporting to Excel";
Notify();
_dataFactory.RestoreDatabase();
}

最佳答案

可以使用 ODBC 吗?

''http://www.ch-werner.de/sqliteodbc/

dbName = "c:\docs\test"
scn = "DRIVER=SQLite3 ODBC Driver;Database=" & dbName _
& ";LongNames=0;Timeout=1000;NoTXN=0;SyncPragma=NORMAL;StepAPI=0;"

Set cn = CreateObject("ADODB.Connection")
cn.Open scn

Set rs = CreateObject("ADODB.Recordset")
rs.Open "select * from test", cn

Worksheets("Sheet3").Cells(2, 1).CopyFromRecordset rs

顺便说一句,Excel 对 HTML 和内部样式表非常满意。

关于excel - 我可以从数据源导入 INTO excel 而无需迭代吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3752121/

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